Оператор switch представлен на всех основных языках сегодня (Javascript, Java, PHP, C#, C++, C), но на каком языке это утверждение впервые появилось?Кто изобрел инструкцию switch?
ответ
Lisp имеет cond
, который Wikipedia's source мест в 1956-1958 годах.
Я придумал условные выражения в связи с набором рутинных операций по шахматам, которые я написал в FORTRAN для IBM 704 в M.I.T. в течение 1957-58 ... Документ, определяющий условные выражения и предлагающий их использование в Алголе, был отправлен в Связь ACM, но был произвольно понижен до письма редактору, поскольку он был очень коротким.
- John McCarthy: Lisp Prehistory - Summer 1956 through Summer 1958
Справа, забыли про ветку Лиспа! Раньше BCPL и ALGOL (хотя позже, чем не совсем-таки-переключатель FORTRAN). +1 – Amadan
Я * думаю * статья будет в выпуске CACM том 2 (1959), но их он-лайн архив, похоже, не включает письма в редакцию. Если кто-либо, кто имеет доступ к старым изданиям, может проверить это или, в идеале, предоставить ссылку на оригинал, который будет большим. – tripleee
В тексте в Википедии утверждается, что это событие, когда «cond» было изобретено, но беглый прочтение статьи Lisp Prehistory, похоже, не подтверждает или не опровергает это утверждение. Википедия ссылается на «более общую структуру * cond *» вместо «if» - 'then' -' else', поэтому я основал этот ответ. – tripleee
Среди языков, на которые вы ссылаетесь, возможно, C будет первым. Однако, если вы внимательно наблюдаете, концепция возникает из более основных языков, как в случае языка уровня сборки,
На это нельзя ответить, поскольку это была эволюция концепции. C (самый старый в вашем списке) был выделен из B (также был switch
), который развился из BCPL (имело switchon
заявление). BCPL пришел из CPL, которого (AFAIK) этого не сделал. С другой стороны каньона Pascal-vs-C, ALGOL (имело case
заявление в ALGOL68), эволюционировало от FORTRAN (имело рудиментарный предшественник в вычисленном заявлении GO TO
). Вычисленный GO TO
очень низкоуровневый и легко реализуется в сборке.
Я спрашиваю про синтаксис, который используется на всех популярных языках. Я тоже верю, что это было B. – Tom
- 1. Кто изобрел прокси-сервер и когда?
- 2. Как сделать инструкцию switch wpf
- 3. Кто изобрел дзэн-кодирование и есть ли там опубликованная спецификация?
- 4. Кто изобрел метод throw/try/catch [/ finally] для обработки ошибок?
- 5. Кто «изобрел» i, j, k как целые имена переменных счетчика?
- 6. Преобразуйте следующую инструкцию SWITCH в инструкцию IF ... ELSE
- 7. Умный способ реализовать эту инструкцию switch
- 8. Как заменить инструкцию else с оператором switch
- 9. Пытается использовать инструкцию Switch в SSRS
- 10. Как написать инструкцию Switch в контроллере angularJS
- 11. Как использовать инструкцию switch в Angularjs
- 12. Как написать инструкцию switch в R?
- 13. Коробки с ячейками, хранить в массиве и использовать инструкцию switch
- 14. Как написать инструкцию switch со строками в C++?
- 15. как преобразовать if-statement в инструкцию switch. (свойства текстового поля)
- 16. Вопрос о JavaScript: как я могу сбросить инструкцию switch?
- 17. Как преобразовать сравнительную инструкцию if в оператор case switch?
- 18. Как написать инструкцию switch для строк в Qt?
- 19. Как я могу сделать инструкцию if-else в инструкции switch?
- 20. можно ли использовать инструкцию goto в инструкции switch? В PHP
- 21. Как преобразовать оператор switch в инструкцию if else для java
- 22. Как я могу изменить эту инструкцию if-switch?
- 23. Я изобрел колесо с этой функцией дедупликации?
- 24. Haskell: Какую монаду я только изобрел?
- 25. Может ли кто-нибудь сказать мне, как закодировать инструкцию SWITCH для приведенной ниже ситуации для выбора значений внутри поля?
- 26. Переменные Tuple - Может кто-нибудь объяснить мне следующую инструкцию SQL
- 27. Может ли кто-нибудь помочь мне оптимизировать эту инструкцию mysql?
- 28. Может кто-нибудь помочь мне перевести инструкцию CASE с датами?
- 29. Может ли кто-нибудь описать инструкцию `SELECT LAST_INSERT_ID()`?
- 30. Switch switch breaks menu
[Вопросы истории программирования являются вне темы на переполнение стека] (https://meta.stackoverflow.com/questions/255424/how-should-the-history- tag-be-disambiguated # comment24818_255425) –
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что речь идет об истории программирования, а не о программировании – Dijkgraaf