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

Я думаю, мне относительно повезло — мне никогда не приходилось иметь дело с 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 КОБОЛ II. Проект, который, по моему мнению, должен был занять чуть больше одного человеко-года, в итоге занял около пяти человеко-лет.

Сначала минимальный фон. 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 — один из немногих языков, на которых благодаря метафоре проводки можно писать код, который буквально выглядит как тарелка спагетти. Учитывая цветовую кодировку (которая сообщает тип данных, проходящих через каждый провод), вероятно, это макароны примавера.

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

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

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

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

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

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

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

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

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

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

...

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

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

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

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

Существующие программы Finance Basic MIS были написаны на ПЛ/Явероятно, системным инженером IBM. ИМХО, что делает этот язык достойным упоминания в этой теме, так это, как говорится в статье Википедии в подразделе «Проблемы программистов»,

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

Программисты как на COBOL, так и на Фортране рассматривали его как «большую» версию своего собственного языка, и оба были несколько напуганы этим языком и не хотели его принимать. Еще одним фактором было псевдо-сходство с 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.

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

Я написал пару программ по программе 100LOC на BASIC и FORTRAN на бумаге на выпускных экзаменах в средней школе. Получил 200/200 в CS.

johnsonwax сказал:

В 90-х (может быть, уже в 80-х) существовала база данных, в которой использовался язык визуального программирования, такой как блок-схема. Играть весело, а делать что-то ценное — чертов кошмар.

Нажмите, чтобы развернуть...
На самом деле это не одно и то же, но, возможно, одна и та же идея.

Houdini — программа для визуальных эффектов. Он полностью основан на узлах, и его узлы варьируются от очень низкого уровня до узлов высокого уровня, которые являются обертками для узлов низкого уровня. Он также имеет хорошо продуманный способ просмотра всех данных, которые передают узлы.

Это не совсем язык программирования, но я рассматриваю его как язык визуального программирования. И это не так уж и непонятно, поскольку оно используется во всей индустрии визуальных эффектов.

Что касается реального языка программирования, то наиболее странными мне кажутся Extendscript (вещь типа JavaScript для автоматизации продуктов Adobe) и MEL (встроенный язык сценариев для 3D-программы Maya).

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

Вечные мысли, размышления, знания и небольшие проекты, сделанные своими руками.
July 19, 2023

Я купил лазерный резак (Atomstack X20 Pro). Почему я купил лазерный резак? Он был в продаже.Что я сделал? Я живу в фургоне!Мне действительно нужно ...

Это хитрые акулы, ворующие рыбу, против рыболовы в NatGeo’s <em>Бандиты бычьей акулы</em>
July 19, 2023

В клетке интересно находиться.Чем больше мы изучаем животных, тем больше понимаем, что они умнее, чем мы думали. Осьминоги, например.Не уверены, чт...

Что вы узнали сегодня? (часть 2)
July 19, 2023

TIL, что некоторые поставщики просто не могут понять, как заставить работать простые SFTP-соединения. Нам нужно ежедневно отправлять файл поставщик...