Как стать автором
Обновить

Комментарии 46

Почитал с удовольствием, спасибо
Зря не написали про ЯМБ (Язык Машин Бухгалтерских). Использовался в семействе машин для планирования производства «Нева» и «Искра». Дожил до 1990-х в машине Искра-1030 которая работала на клоне MS-DOS т.е. существовал даже ЯМБ.EXE :)

Искра-555
Оказывается, 1С не был первым.
Позабавило ОКНОДАЙ и ИНАЧЕ ВСЁ :)
ФСЕПРОПАЛО
ОЙВСЁ
Мне больше всего понравилось «один из двух входных языков учебной системы программирования, входящей в состав интегрированной программной среды «Школьница»») Лучше сразу «Малютка», чего уж там)
программист-педобир :)
Вот-вот, тоже эта мысль посетила. Довольно недвусмысленные названия)
ЕСЛИ ПЕРЕД СОСТАВОМ ТУПИК
ТО ВЫВОД НЕ МОГУ НЕКУДА ВЫХОД
ЕСЛИ ПЕРЕД СОСТАВОМ СВОБОДНО
ШАГ СОСТАВА ВСЕ
Но ведь всё понятно же!
Ну как то так для англоязычных людей выглядят почти все языки программирования
Тот редкий случай, когда радуешься, что не знаешь английский на уровне родного…
Не упомянут интереснейший «Дружелюбный русский алгоритмический язык, который обеспечивает наглядность
(ДРАКОН)
Если не ошибаюсь, на нем «летал» Буран.
На PL-1 и Modula-2 пришлось в своё время программировать…
PL-1 -почему то совсем не запомнился…
А на Модуле писал программы по имитации фрагментации оперативной памяти и поиску дедлоков конкурирующих процессов.
Славное было время!
Почему-то про BASIC нет упоминаний.
Ю. Л. Кетков работал в ННГУ с 1957 года, с 1973 года — на кафедре МО ЭВМ (с момента ее основания), он является автором десяти известных учебников по информатике и программированию, создателем русской версии интерпретатора языка программирования BASIC.
С Юлием Лазаревичем всегда было очень приятно общаться. Он часто вспоминал про Шура-Бура (интересно, склоняется или нет) и Ляпунова.
Странно что в тексте вообще присутствуют слова «первым в мире». Со всем как говориться уважением, но в информатике мы не были первыми, почти ни в чем. Хотя теперь мы конечно одни из самых сильных.

Пруф: ru.wikipedia.org/wiki/%D0%9F%D0%BB%D0%B0%D0%BD%D0%BA%D0%B0%D0%BB%D0%BA%D1%8E%D0%BB%D1%8C
Совсем забыли Глушкова. Его языки Мир-2 и Аналитик были революционными. И что очень важно были созданы под ЭВМ Мир-2. Это наверно единственное аппаратно программное решение по крайней мере на то время. Правда Аналитик вроде бы адаптировали для СМ-4. Но деталей не знаю. Так что кое где мы все таки первыми в мире были. А до возможностей языка Мир-2 и сейчас ни один язык не дорос.
Расскажите подробнее про возможности МИР-2, пожалуйста!
Если интересно то в интернете можно найти информацию по запросу:
Аналитик язык Мир-2
Это теоритическая разработка, в отличие от ПП-1/ПП-2. Язык — да, Цузе придумал раньше остальных. А вот компиляторы с ЯВУ-таки первые наши.
Вы — молодцы!
Так держать!

Планируется ли статья про Сетунь?
Эпичная статья, спасибо. У Эльбрусов входной язык неимоверно крут, если это его ассемблер.
Единственный отечественный язык программирования, получивший общемировую известность, это язык Рефал.

Единственный — но факт!
Интересно, кому пришло в голову, что писать весь код капсом — это хорошая идея?
Чтобы не было неоднозначности видимо )
Поддержка строчных букв появилась далеко не сразу
Если есть язык Ада, должен тоже существовать язык Рая.

P.S. Знаю, кто такая Ада Лавлейс.
Бальзам на душу эта статья — повеяло теплыми воспоминаниями о моих работах в Н-ске ( Ак.городок) на АЛГОЛе,
тогда он именовался АЛЬФА!
Потом даже на ICL-1900 продолжал свой алголовский опыт для физических задач, когда там доминировал фортран:-)
Спасибо
Ну если говорить о языках программирования, то можно было упомянуть и Старсет.

Язык программирования сверхвысокого уровня СТАРСЕТ, ориентированный на ускоренную разработку информационных систем и прикладных баз данных. Язык базируется на использовании множественной модели данных как основного средства организации информации. Приводится формальное описание языка и его операционной семантики, даны многочисленные примеры использования его основных конструкций для программирования информационных задач и задач других классов, особое внимание уделяется использованию параллельных конструкций работы с множествами.
А еще мы переходили «От Паскаля к Аде»:image

Авторы: В. Н. Орлов, В. Ю. Блажнов, Т. Ю. Бардинова, А. А. Маслов,
Издателство: Финансы и статистика, 1990 г.
Говоря о разработке языков программирования и компиляторов в СССР, нельзя забывать и об операционных системах, созданных в СССР. И в первую очередь о советском Юниксе о Мобильной Операционной Системе (МОС).
Читаю
Рыбин С.И. рассказал о методике тестирования диагностики транслятора (вообще, и языка Ада в частности), разрабатываемой в МГУ под руководством Кауфмана В.Ш. Приведены данные по оценке качества и диагностики трех трансляторов Лада, Ада-Эльбрус и венгерская Ада ЕС; из них видно, что качество диагностики Ада-Эльбрус – лучшее из трех систем.


И очень это интересно в связи с тем, что Эльбрус возрождается. И там есть защищённый режим, который, по всему видно, как раз заточен под такой язык программирования, как Ада. Например, там есть дескрипторы модулей, которые не дают чужому модулю залезть внутрь структуры, и это замечательно проецируется на адское «is private». Какой модуль не может семантически заглянуть внутрь private, тому и железо не должно это позволять. Проверка переполнения целого числа аппаратно поддерживает большую часть числовых типов языка Ада, но есть ещё модульные типы, у которых прокручивание при переполнении по стандарту, и компилятор Ады может инструктировать аппаратуру, где надо проверять, а где — нет.

Интересные книги про Эльбрус есть под авторством Запреева, но сканов в Интернете нет. Только в библиотеку в Москве ездить.
До семейства ПП-х уже существовал предтеча Фортрана — Speedcoding (примерно 1953 год) и даже Shortcode (примерно 1950).
При всем уважении к отечественным основоположникам, но теории грамматик (Хомский) и построения трансляторов (публикации в ACM, у нас распространились статьи Д.Гриса) тоже разрабатывались в США.
При всём уважении к БНФ и прочей научной красоте, книгам Гриса (читали, да) и протч., парсеры отлично пишутся без знания слова «грамматика» и всей формальной мишуры. Рекурсивный спуск интуитивен, легко отлаживается и делается из биоматериалов не отходя от кассы со скоростью придумывания языка или быстрее.
Не вдаваясь в написанную несуразицу, она как-то опровергает факты, что теория и практика языко- и компиляторостроения процветала на Западе, тогда как в СССР уже в 1960-е в основном передирали готовые грамматики, которые вы так походя зачислили в категорию академических забав?
1. Я могу высказаться более однозначно. За исключением монстров типа А68 написание компилятора не требует никаких теоретических знаний. Более того, никто никогда не проектирует грамматику языка, которую потом реализуют. Любой нормальный человек пишет компилятор, а потом записывает в виде грамматики то, что получилось, если вдруг очень хочется выглядеть круто. Я чуток утрирую. Не сильно. Иногда компилятор пишут сразу на базе yacc/bison/другой генератор, и тогда исходник имеет вид, близкий к БНФ. Но не надо обманывать себя — это не значит, что автор знаком с теорией.

2. В 60-м были Фортран, Лисп и Алгол. А, ещё Кобол. Из этих четверых на какую-то грамматику может претендовать только Алгол. Остальные примитивны донельзя и разбираются парой switch-ей. Фортран ВООБЩЕ невыразим в БНФ. В Фортране тех времён DOI=1,3,1 парсилось как DO I = ..., то есть даже разделения на лексер и парсер не было. Нельзя для него передрать готовую грамматику. А Лисп и Кобол парсить — да, это, конечно, без БНФ ну никак не прорваться. Одних скобок — не сосчитать, сколько.

3. Я верно понимаю, что clang передрал у gcc готовую грамматику? Или когда буржуй реализует ЯП, то это «реализует», а если русский реализует, то это «передрал»? И мы что обсуждаем — научные работы по тематике формальных грамматик, или реализацию программистами СССР популярных ЯП?

Я не совсем понимаю, а проектирование языка у вас где-то присутствует или надо сразу кодировать транслятор? А что у нас на входе автоматических построителей трансляторов, созданных в 1960-е годы (lex/yacc и прочая) и с тех пор мало изменившихся? А как убедиться, что язык получился контекстно-свободным? Фортран же, как вы, надеюсь, знаете, не помещается и потому разбор должен писаться руками. А зачем класс регулярных грамматик, для которых вообще не нужен рекурсивный спуск? Вы и для Форта или макропроцессора собираетесь писать спуск?
Вы извините, но какое-то «зачем нужна география, если есть таксисты» получается.
1. Проектирование.
1а: посмотрите на perl, php, lua, c (!!) и даже на python и расскажите мне про проектирование. Реально используемые ЯП созданы ad hock. На коленях. Си вырос из макроассемблера. Итеративно. Собственно, всё реальное растёт из говна итеративно.
1б: Проектирование бывает. Но не является ни обязательным, ни критически важным. Синтаксис языка вообще мало отражает и сложность его, и степень его спроектированности. Сложный синтаксис не нужен ни для чего. Ни для программиста, ни для автора ЯП.

2. Я уже писал. На входе яка — БНФ, но это ВООБЩЕ не значит, что автор файла mylang.y хоть что-то понимает в теории формальных грамматик. Как правило — не понимает. Для описания ЯП это не нужно.

3. Про Фортран я Вам рассказал в своём комментарии. С учётом этого факта Ваша формулировка «надеюсь знаете» меня удивляет.

4. «А как убедиться, что язык получился контекстно-свободным?» — Вы теоретик, или писали компиляторы? Во-первых, всем пофигу, получился язык контекстно свободным, или нет. Ну — вообще пофигу. (Си контекстно зависим, и всем плевать.) Во-вторых при рекурсивном спуске у вас или достаточно информации для принятия решения о продолжении разбора, или недостаточно. И это просто очевидно в каждой точке реального кода парсера. Ну и да, контекстно свободным язык получается если принятие решения опирается только на следующий токен. А зависимым — если ещё и в таблицу символов заглядывать.

Я извиняю, но написал я в самом начале простую вещь: БНФ и танцы с грамматиками — это наука. А написание компиляторов — это ремесло. Оно отлично делается без науки. Хуже того, наука не сильно помогает его делать. А зачем она нужна — это отдельный вопрос.
Ооо, ну, понятно, решили заменить тему «проектирование ЯП» на «да кто их проектирует-то». Это несерьёзно. В свою очередь рекомендую посмотреть на «реально используемые ЯП» вроде SQL, Явы, Сишарпа, не говоря уже о большом Паскаль-семействе. Современный компилятор GNU С использует формальные описания и yacc для построения синтаксического анализатора.

КС-язык вовсе не зависит от «следующего токена», как это присуще регулярной грамматике. В КС общий случай — LR(k)-разбор, когда для принятия решения о свертке нужен предпросмотр k символов. Но скорее соглашусь: языки, созданные «на коленке» чаще всего влезают в LR(1), потому что голова не резиновая, а проектировать не умеем.

Раз уж перешли на личности, да, я разрабатывал трансляторы и не раз видел поделки, сделанные «по наитию». С усложнением языка без формальных моделей не обойтись (в т.ч. для упрощения разбора), каждый раз изучать код и комментарии, восстанавливая картину — это не очень продуктивно, мягко говоря.
Предлагаю прийти к консенсусу. :) В те времена, о которых мы говорим, сложность ЯП не предполагала серьёзной работы по проектированию и не выигрывала от неё. Сегодня ситуация иная и, действительно, есть ЯП, которые показывают высокий класс инженерной школы. Ява — действительно яркий пример. Только будем откровенны. Я тоже считаю, что Ява — это высокий класс, но миру в среднем похрен и вполне наколенный Питон очень выраженно Яву вытесняет.

Насчёт предпросмотра k символов Вы, конечно, правы, но при рекурсивном спуске эти к символов лежат в потоке управления, который привёл нас сюда, а _здесь_ выбор всегда определяется одним следующим символом. И ad hock языки именно так и растут — добавим в этот свитч ещё один токен.

Не сочтите меня противником инженерии и проектирования. Я — сторонник. Только я ещё и реалист. Я, собственно это Вам изначально и написал — формальная модель возникает не до, а после, и инструментом проектирования ЯП не является. Как правило.

Мало того — это ещё и хорошо, потому что голова у программиста тоже не резиновая, и сложный синтаксис — это беда.

С уважением.
Не для спора, просто вспомню, что уже давно почти 30 лет назад в вузе вполне себе практики нас учили так «сначала берешь готовую грамматику (скелет), потом накладываешь на неё свой язык (наращиваешь „мясо“)». Пока что жизнь подтверждала правильность такого подхода. Ну, а Питон велик и ужасен, конечно, это современная реинкарнация устаревшего Бейсика, но ведь «наколеночное» программирование тоже нужно, особенно для профессионалов в других областях.
С уважением
Зарегистрируйтесь на Хабре, чтобы оставить комментарий