Какой самый старый, самый странный, самый неприятный или самый необычный язык, на котором вы когда-либо программировали?

Думаю, мне относительно повезло — мне никогда не приходилось иметь дело с MUMPS, kdb/q, APL или подобными эзотерическими языками. Я много жалуюсь на Perl, так что это был бы мой голос за самый странный/самый противный. Самым старым, вероятно, будет Lisp. Самым глупым был бы Windows4GL — продукт Ingres, который был клоном PowerBuilder с меньшими возможностями.

Некоторые люди считают КОБОЛ быть странным языком, потому что, основанный на дизайне Грейс Хоппер для FLOW-MATIC,
Операторы COBOL имеют синтаксис, похожий на английский, который был разработан, чтобы быть самодокументируемым и легко читаемым. Однако он многословен и использует более 300 зарезервированные слова. В отличие от современного лаконичного синтаксиса, такого как y = x;, язык COBOL имеет более близкий к английскому синтаксис (в данном случае MOVE x TO y).
Нажмите, чтобы развернуть...
Департамент обороны. поддерживал Hopper, потому что «бизнес» приложения в начале 1960-х кодировались на языки ассемблера 2-го поколения программистами, знающими не более элементарной алгебры, которые были в дефицит. Я занимался этим около года, поэтому выучил COBOL за 1 неделю в 1969 году. Проблемы возникли, когда такие приложения
терпел.

Такие приложения терпел потому что они воплощали особый требования организации. Им нужно преобразование, как здесь,

С середины 1994 до начала 1996 года я был ведущим программистом в проекте по преобразованию более 2100 программ Нью-Йорка. Интегрированная система финансового управления Агентства финансовых информационных услуг от IBM OS / VS COBOL до IBM КОБОЛ 2. Проект, который, как мне кажется, должен был занять чуть больше одного человеко-года, в итоге занял около пяти человеко-лет.

Сначала минимальный фон. FISA была создана после финансового кризиса в Нью-Йорке 1975 года («Форд в город: офигеть!») для решения двух проблем: (1) не было общегородского бюджета по сравнению с актуальная система бухгалтерского учета. (2) Различные городские агентства платили работникам, для которых у них не было статей бюджета. FISA наняла известную консалтинговую фирму для создания двух систем: (1) интегрированной системы финансового управления и (2) системы управления заработной платой. Система, которая, в дополнение к обычным действиям, выполняемым системой расчета заработной платы, подключается к IFMS, чтобы гарантировать, что ни один сотрудник, не включенный в бюджет, не получит оплаченный.

Обе эти системы были написаны с использованием компилятора IBM OS/VS COBOL разными группами подрядчиков. Основная проблема заключалась в том, что компилятор OS/VS COBOL был просто переработанной версией оригинального компилятора IBM. компилятор COBOL-65 уровня F до стандартизации ANSI, он мог обрабатывать операторы, которые были расширениями IBM, а не частью КОДАСИЛ КОБОЛ-65. Некоторые из этих расширений удовлетворили насущные потребности, которые ANSI позже удовлетворил с помощью другого синтаксиса/семантики, но некоторые из этих расширений сформировали исходный уровень. подъязык отладки (COBOL изначально был разработан для написания приложений пакетной обработки), который недисциплинированные программисты не могли удержаться от использования для не отладки код. IBM написала свой компилятор, совместимый с COBOL II ANSI-85, с нуля, используя недавно разработанные методы CS, и не повторно реализовывала расширения F-уровня...

Нажмите, чтобы развернуть...

IBM сочла необходимым/полезным добавить расширения F-уровня 1965 года из-за поспешного принятия COBOL. Но КОБОЛ странный синтаксис английского языка сделай это легкий чтобы добавить такие расширения, просто требуя дополнительные зарезервированные слова.
.
Ананке сказал:

LabView — это язык, который я использовал, и который мне понравился меньше всего. Отчасти потому, что кодовая база, которую я получил, включала «виртуальные инструменты» (labview для «модуля»), которые требовали три монитора, чтобы полностью поместиться на экране одновременно, и будет ли ИТ или мой PI платить за такое количество экранов для скромного кандидата наук студент?

Нажмите, чтобы развернуть...
Это дерьмовый, хотя и довольно распространенный стиль кодирования LV. Подпрограммы, люди, подпрограммы.

Справедливости ради, LV — один из немногих языков, на которых из-за метафоры проводки можно написать код, который буквально выглядит как тарелка спагетти. Учитывая цветовое кодирование (которое говорит вам о типе данных, проходящих через каждый провод), вероятно, макароны primavera.

На самом деле было несколько человек, которые могли следить за "код спагетти" с большим количеством GOTO. Одним из них был программист по имени Джерри из Транспортного управления Нью-Йорка. Другой был (тогда недавно продвинутый) Капитан Грейс Мюррей Хоппер, которому я задал вопрос о GOTO в COBOL из аудитории на сессии Fall Joint Computer Conference 1973 года. Ее ответ был: «Проблема в том, что люди недостаточно изучают объемную геометрию». Очевидно, она не знала, что у нее есть редкий талант.

В 1983-1984 годах я был программистом в корпорации Computer Sciences Corp., которая создала раннюю систему разделения времени, основным языком пользователя которой был Фортран 77. Я старался писать структурированный код, но однажды мне пришлось модифицировать чужую программу, написанную на классический стиль Фортран. Он был написан с большим количеством трехсторонних ветвей, которым я с большим трудом следовал.

DavidH сказал:
На самом деле было несколько человек, которые могли следить за "код спагетти"
Нажмите, чтобы развернуть...
Вы можете писать дерьмо на любом языке, некоторые из них более благоприятны для этого, чем другие. Я работал над многими проектами C, где есть только один выход из функции, все устанавливает конкретную ошибку и делает "goto end"; который разворачивает все чисто и в одном месте. Это замечательно. Я также видел целую функцию препроцессора с именем u, которая не принимает аргументов, так что вы просто получите u; в середине функции без объяснения причин. Я спросил кого-то, где это было определено в коде и что он делал, и получил ответ «это хорошо известно».

Как упоминалось ранее, Perl, кажется, привлекает людей, которые хотят стукнуться лбом о клавиатуру и получить связный код, но это не так. иметь чтобы так было написано.

Как правило, пока человек не невероятно умен и запрограммирован на пределе своих возможностей, у вас, как правило, все в порядке. Сохраняйте идею о том, что у кода есть две функции: одна — заставить компьютер что-то делать, а вторая — сделать то, что вы делаете, понятным для человека, читающего код.

Мне пришлось выучить Алгол в школе. Мы писали наши «программы» от руки, и преподаватель их оценивал. Не было компьютера, на котором можно было бы их запускать.

В начале 80-х я играл с некоторыми 8-битными домашними компьютерами, большинство из которых использовало их собственные совершенно индивидуальные версии Бейсика. Самым странным, наверное, был Sinclair ZX81.

В 90-х я делал кое-что в TCL. Я недавно возобновил; С тех пор TCL прошел долгий путь и идеально подходит для набора задач, с которыми я работаю. Но когда-то я не особо разбирался в TCL и забыл... в принципе все. Я был программистом на Pascal в течение очень долгого времени и привык иметь всевозможные высокоуровневые функции, с которыми можно было играть. TCL сильно отличается в том, как он работает. На самом деле это не сложно, просто я устоялся на своем пути. TCL крошечный, и у него в рукаве много интересных трюков. И для языка, который должен быть почти мертвым, его части обязательно ходят; SQLite был исходным обработчиком базы данных TCL, а его графические расширения были портированы как Perl/Tk и Tkinter под Python.

Когда-то я баловался FORTH. Я был в восторге от концепции, но реализация была... сырой. И хотя он, вероятно, хорошо работал для управления машиной, для которого он изначально был разработан, он плохо подходил для реального программного обеспечения, которое я хотел написать. TCL во многом напоминает мне FORTH, за исключением того, что на нем можно писать настоящие программы.

Битпоэт сказал:
Вы можете писать дерьмо на любом языке, некоторые из них более благоприятны для этого, чем другие. Я работал над многими проектами C, где есть только один выход из функции, все устанавливает конкретную ошибку и делает "goto end"; который разворачивает все чисто и в одном месте. Это замечательно. ...

...

Как правило, пока человек не невероятно умен и запрограммирован на пределе своих возможностей, у вас, как правило, все в порядке. Сохраняйте идею о том, что у кода есть две функции: одна — заставить компьютер что-то делать, а вторая — сделать то, что вы делаете, понятным для человека, читающего код.

Нажмите, чтобы развернуть...
Проблема заключалась в том, что вплоть до начала 1970-х гг.большинство программы писались либо на языках ассемблера для компьютеров 2-го поколения, либо на Фортране, который вплоть до Фортрана II принципиально машинно-независимый язык ассемблера с математическими выражениями и возможностями обработки массивов, привитыми к. Таким образом, многие программисты, принужденный чтобы широко использовать GO TO на языке, на котором они кодировались, мысль они были хороший в писать и читать "дерьмо".

Следующий мой опыт поиска неуловимой ошибки в моей программе RCA Phase 3 я прочитайте Сообщения Дейкстры 1968 года о ACM "Заявление о переходе считается вредным" письмо и понял, что я не так хорош с GO TO. Поэтому, когда я изучил COBOL в 1969 году, моя первая программа следовала рекомендациям по «структурированному программированию».БитПоэт описывает, как указано выше.

До вчерашнего вечера мне удавалось забыть о моей менее чем годовой работе в 1972-73 годах аналитиком по управлению проектами в финансовом отделе. группы управленческих услуг NYSE. Помимо разработки базы данных компьютерных операций для предлагаемой ИСУ «Финансы», я отладил существующую базовую ИСУ «Финансы». программ и разработанных процедур для выставления счетов за компьютерное время и услуги разработчиков на NYSE и AMEX. отделы. Объединение нашей группы в СИАК последовало увольнение всех сотрудников.

Существующие программы Finance Basic MIS были написаны на PL/Iвероятно системным инженером IBM. Что делает этот язык достойным упоминания в этой теме, так это, как говорится в статье Википедии в подразделе «Проблемы программиста»,

Многие программисты медленно переходили от КОБОЛ или Фортран из-за предполагаемой сложности языка и незрелости компилятора PL/IF. Программисты были резко разделены на научных программистов (использовавших Fortran) и бизнес-программистов (использовавших COBOL), при этом между группами существовала значительная напряженность и даже неприязнь. Синтаксис PL/I заимствован из синтаксиса COBOL и Fortran. Таким образом, вместо того чтобы замечать особенности, облегчающие их работу, программисты на Фортране того времени заметили синтаксис COBOL и мнение, что это был деловой язык, в то время как программисты COBOL заметили синтаксис Фортрана и рассматривали его как научный язык.

Программисты как на COBOL, так и на Fortran рассматривали его как «большую» версию своего собственного языка, и оба были несколько напуганы этим языком и не хотели его принимать. Другим фактором было псевдо-сходство с COBOL, Fortran и ALGOL. Это были элементы PL/I, похожие на один из этих языков, но работавшие в PL/I иначе. Такое разочарование оставило многих опытных программистов с предвзятым отношением к PL/I и часто с активной неприязнью к этому языку.

Нажмите, чтобы развернуть...

Программы, которые я унаследовал, должны были быть написаны на COBOL, хотя программа IIRC, которая считывала компьютерное время из файлов журнала IBM OS/360, имела аспекты языка ассемблера. Мне не нужно было их отлаживать — только программу учета рабочего времени разработчиков. AFAICT, единственная причина, по которой эти программы были написаны на PL/I, заключалась в том, что этот язык был гордым продуктом IBM.

Работа системных инженеров IBM, ориентированная на продажи, заключалась в том, чтобы помочь клиенту с технологией. Они определенно не были экспертами по приложениям, о чем свидетельствовали отсутствующие функции программы учета рабочего времени разработчиков. Мне приходилось выполнять все мои отладочные и производственные запуски поздней ночью или ранним утром на реальных компьютерах, на которых NYSE работала в режиме онлайн в течение дня.

Несколько проще иметь несколько возвратов в C++ по сравнению с C. Деструкторы убирают за собой, так что перед возвратом обычно остается гораздо меньше работы. Хотя на самом деле вы должны писать на C++, а не просто делать что-то на языке C в файле, оканчивающемся на .cpp.

Ах, один вход, один выход. Один из принципов движения структурного программирования. Я до сих пор дергаюсь, когда делаю оговорки. Сделано для какого-то действительно уродливого кода, как правило. Но если вы примените современную методологию «извлекать до тех пор, пока вы больше не сможете извлечь», это будет не так уж плохо.

Последнее сообщение в блоге

Microsoft изо всех сил старается скрыть роль в нулевых днях, вызвавших взлом электронной почты
October 04, 2023

... С учетом затрат... Разве Microsoft не является в буквальном смысле гангстером, требующим денег за защиту?E5 — это «настоящий» сервис MS365, а в...

Microsoft изо всех сил старается скрыть роль в нулевых днях, вызвавших взлом электронной почты
September 24, 2023

... С учетом затрат... Разве Microsoft не является в буквальном смысле гангстером, требующим денег за защиту?E5 — это «настоящий» сервис MS365, а в...

Microsoft изо всех сил старается скрыть роль в нулевых днях, вызвавших взлом электронной почты
October 04, 2023

... С учетом затрат... Разве Microsoft не является в буквальном смысле гангстером, требующим денег за защиту?E5 — это «настоящий» сервис MS365, а в...