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

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

Можно вспомнить VK со своим kPHP.

Скрипты для инжекта UO?

sub Tinkering()
  uo.cancelmenu()
  uo.automenu('Tinkering','Miscellaneous')
  uo.automenu('Miscellaneous','Empty Bottle')
  while UO.Count('0x1BEF')>3
    UO.DeleteJournal()
    UO.UseType('0x1EBC')
    while NOT UO.InJournal("You put") AND NOT UO.InJournal("failed")
      wait(300)
    wend
  wend
end sub

Что, простите? Не понял вопрос.

Так тоже язык )

OooOoOOOOOooo!
Таки боже мой, сколько лет прошло, а кто-то ещё помнит UO :)

Вот что надо детям для обучения программированию! )
Там и алгоритмы надо продумывать и реализовывать.

Ну, есть всякие роблоксы, ниша уже разрабатывается...

Выглядит как телепузики.

Поясните, пожалуйста, что это такое, гугление показывает разное :)

Если вы знаете какую-то компанию или людей, делающих языки, компиляторы и другой подобный инструментарий в нашей стране, упомяните их в комментариях.

Я делаю языки и компиляторы. По большей части это связки вида: language server (парсер, индекс, подсветка, переходы и т.д) + анализатор/исполнитель синтаксического дерева + экспорт/импорт. Сервера я пишу на Java, клиенты на VSCode, но я ими не занимаюсь.

Это большая и важная работа. Без IDE многим работать сложно, и такие штуки сильно упрощают жизнь, да.

Спасибо большое, очень интересная тема!

Много его докладов найдёте в ютубе, в канале Национального Суперкомпьютерного Форума.

Когда в публичном пространстве появляется информация о новом языке программирования, поднимается волна неприятия.

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

но автор пытается ее представить как что-то невиданное

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

Не знаю. На Хабре в общем не особо вспоминается такое. Помидорами - да, бывало, как правило заслуженно, и уж конечно не просто за то, что изобрели еще один язык.

Просто основные авторы этого негатива - джуны с ПХП и JS.

джуны с ПХП

А бывают сейчас такие? )

Ну, то, что они пишут в резюме не особо влияет на общий уровень.

Мы для себя сделали среду программирования SemanticIDE.
С языком программирования (для обучения), семантическим редактором, и интерпретатором.
Астраханский ГТУ, кафедра АСОИУ.
Я докладывался об этом на конференции в Переяславле-Залесском и в Орле на Днях Оберона.

Дайте ссылку, пожалуйста, интересно посмотреть.

Бывают и примеры обратного преобразования, когда код из более низкоуровневого представления преобразуется в более высокоуровневое.

Интересно. Не подскажете пример такого?

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

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

Речь про ARM-based процессоры. Найти запись выступления, к сожалению, не смог.

Этим занимались люди из ЮФУ, делая пере-компиляторы для ПЛИС.

не прослеживаю связи между языком программирования и геополитикой.

А как язык может быть направлен на западный рынок? Это когда ридми написан на английском?

Жду новости об импорта замещении западного воздуха в связи с влиянием на него стран, над которыми он пролетает). Да и кто знает, сколько ещё времени эти страны будут позволять ему свободно к нам пролетать? Важно не упустить момент и создать свою систему воздухоснабжения. Придумайте название в качестве домашнего задания)

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

Когда кто-то пишет про мифические закладки в компиляторах (без доказательств и да я прошел по ссылке) это значит паранойя или они уже сами это сделали, но не получается внедриться или где то посередине между двумя состояниями.

Когда кто-то пишет про мифические закладки в компиляторах 

Не обязательно в компиляторе, но примеры есть.

Паранойя - это, конечно, прикольно. Но есть и более интересные предположения. Например, можно закрыть доступ к репозиториям для России. Допустим, PyPi закроет доступ для русских. И всë: без обхода ограничения особо не попишешь на Пайтоне. Нельзя исключать и того, что GitHub однажды может закрыть часть репозиториев по географическому признаку. До 2022 года никто вообще не думал, что можно проворачивать такое: что, допустим, можно запретить доступ к лицензионному контенту только для отдельных стран. Однако, это работает, и это не паранойя.

Следующий момент: ЯП, обычно, создаются для решения прикладных задач или проблем других языков. Например, JetBrains сделали Kotlin, как более лаконичный аналог Java. Google когда-то создал golang, решая проблемы компилируемых языков. Например, управление зависимостями или скорость сборки. И здесь важно то, что не обо всех языках мы знаем. Существует много ЯП, которые "не выстрелили". То есть, разработка ЯП - это исследовательская работа. Она либо приводит к появлению нового популярного ЯП, либо нет. Так вот, в России эта работа до нашего времени активно не велась. Несколько энтузиастов, пишущих свои языки - это недостаточный объëм вариантов, чтобы один из них стал популярным. В то же время, разработка и развитие собственных ЯП - это часть информационного развития страны. Это репутационный момент. Это маркер развития информационных технологий, указывающий на состояние исследовательской базы.

Очень условно можно сказать, что резкая критика русских ЯП исходит от нубов, которым исследования в области создания ЯП не интересны. Они вошли в IT на пол шишечки, им интересен пыхапэ и ява, которая скрипт. Тем не менее, если те же вузы не ведут исследований в области написания своих ЯП, или собственных компиляторов к существующим ЯП, или в области эволюции хранения и обработки данных, то должны появляться вопросы: а чем вообще занимаются эти вузы? Каких специалистов они готовят, если не ведëтся подобная исследовательская работа? Очень печально, что подобная деятельность в России полностью сосредоточена в руках частных фирм и не исследуется в технических вузах. Допустим, тот же Kotlin создали в тогда ещë русском JetBrains. Яндекс родил Clickhouse. Но я не слышал, чтобы университеты в России рождали что-то подобное. Разве что новые методы сброситься комиссии по защите дипломных работ. Отсюда и бредовая идея: собственный ЯП нам не нужен - а вот коньяк с конфетами сами себя не купят.

Но я не слышал, чтобы университеты в России рождали что-то подобное.

Не то, чтобы совсем ничего не делалось, так говорить тоже неверно, выше уже приводили ссылки и фамилии.

Но проблема действительно есть, ВУЗам эта тема не очень интересна, хотя наукоемкость у нее высокая, как мне кажется.

Мне трудно говорить об этом - с темой не особо знаком. Раньше ВУЗы стабильно выкидывали на рынок мышковых программистов на Visual Basic. Ну, ещё на Delphi.

А так, тема простая: разработка собственных ЯП, которые выходят на мировой рынок, гарантирует, что определённые устройства и программные продукты будут работать под управлением данного языка. И соответственно, если происходит некая экономическая борьба между государствами, страна, в которой зарегистрирован правообладатель исходников компилятора (или других исходников), может оказывать давление на конкурентов. Потому, что ограничение доступа к поддержке, или к исходникам, или к репозиториям, по сути создаёт проблемы пользования ПО и устройствами. И чем больше языков находится в юрисдикции страны, тем большее давление можно оказывать. Допустим, тот же Google Play репозиторий - ситуация связана не с ЯП, но очень близка к описываемой теме. Когда репа закрылась для Huawei, это оборвало резкий рост китайской компании. Хотя, они могли бы уже конкурировать с другими производителями в США и Европе. Когда русские банковские приложения забанили, или Google Pay, это тоже отразилось на нашем банковском секторе: люди, которые за границей пользовались услугами наших банков, были вынуждены отказаться от их услуг. А банки, как мы знаем, могут работать не только в своей стране.

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

Oracle уже блокировал доступ к Java, например.

Возможет такой вариант. Лицензия, скажем, Go, дополняется пунктом, что скачать с сайта дистрибутив и использовать его для разработки можно, только если вы делаете открытый проект, а если вы пользователь из России и продаете свой софт, тогда вам нельзя этим дистрибутивом пользоваться.

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

А покупатель не пойдет на такое нарушение, потому что у него свои регуляторы, ему внутри ЕС или США прилетит такой штраф, что дешевле отказаться.

Согласитесь, что уровень паранои в вашей статье немного превышен. Ни о каких закладках в компиляторах никто никогда не слышал это раз. Дальше вы сами же различаете деятельность по созданию языка и создания компилятора и других утилит к нему, а потом делаете некрасивую бяку и преподносить страхи проблем с доступом к продукту/компилятору как обоснование необходимости создавать языки.

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

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

Ни о каких закладках в компиляторах никто никогда не слышал

Может быть.

ACM Turing award lectures, Reflections on trusting trust, Ken Thompson, 1984

https://dl.acm.org/doi/pdf/10.1145/1283920.1283940

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

Тут дело простое, доказать отсутствие чего либо - технически невозможно следовательно я никогда не смогу доказать, что закладок нет, но люди существа разумные и научились жить с этим диагнозом. Тот кто утверждает что закладки есть, ну или хотя бы могут быть внедрены вот таким способом, тот и доказывает, что он не пустобрех.

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

А по колхозному, хорош ля-ля и покажи код.

Конечно это верно для языков, которыми кто-то владеет. Если oracle вдруг захочет сделать что угодно неординарное, то она может это сделать.

Но другое дело, если язык никому не принадлежит.

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

Но другое дело, если язык никому не принадлежит.

В этом то и проблема. У большей части языков есть владелец. Когда вы хотите послать свой патч в репозиторий, обычно (не всегда, но довольно часто) вы подписываете соглашение, в котором прямо прописано, что вы отказываетесь от владения своим патчем в пользу владельца репозитория.

Формально выходит, что являясь автором патча и соавтором языка/библиотеки, владельцем кода вы не являетесь.

нельзя ли форкнуть просто какой-нибудь раст

Форкнуть можно. Но это по прежнему будет Раст. Чтобы это был Раст+ нужно делать что-то еще, помимо просто форка.

в пользу владельца репозитория.

Это как-то противоречит слегка опен сорсу. Возможно так и есть, понятно что есть человек или группа людей, которые делают важные решение. Тогда получается и они могут легко запретить по своей прихоти. Но, с другой стороны, у них выгоды от этого явно меньше, чем у коммерческой компании. Впрочем, форк решает эти проблемы.

Но это по прежнему будет Раст

Раст+ или раст - не важно. Я хотел узнать будет ли он вашим, чтобы никто не мог запретить. Спасибо

Если вы достаточно компетентны, чтобы самостоятельно развивать языки уровня Раст - то это будет просто неинтересно. Форкать чужие языки вообще не интересно. Интересно идеи оттуда присваивать и переосмысливать.

я не думаю, что автор в конце статьи мотивировал писать свои языки ради интереса)

Но я с вами абсолютно согласен

Тоже этим грешу. Один - это надстройка над SQL для решения задач промышленной автоматизации, другой - встраиваемый для математических вычислений, прямо сейчас переживающий очередную реинкарнацию.

Но хотелось бы добавить, что множество новых языков вызывает ощущение "язык ради языка", то есть не ради решения конкретных задач, а для удовлетворения ЧСВ автора, особенно когда он позиционируется как мульти-парадигма-идальный на все случаи жизни. При этом в его концепции либо ничего принципиального нового, либо совершенно упоротый синтаксис. Каких только убийц с++ не появлялось, а тот всё жив и жив. Язык D тому наглядный пример.

не ради решения конкретных задач, а для удовлетворения ЧСВ автора

Как раз поэтому я написал про творчество. Определенный максимализм присутствует почти во всех новых работах. Но ведь это и неплохо! С другой стороны, ЧСВ задирается во многом оттого, что сначала совершенно неясен объем предстоящей работы, мол "Я сейчас как ух! Я сейчас как эх!" и в омут с головой. Большинство (из виденных мной) ребят несколько успокаиваются, часть уходят, остальные уже трезво оценивая работу, начинают делать более адекватные вещи, сужая семантику языка, упрощая компилятор и т.д.

Важно, чтобы эта работа велась, откуда специалистам то появляться?

Каких только убийц с++ не появлялось, а тот всё жив и жив. Язык D тому наглядный пример.

При этом ни один язык, который пророчили на эту роль, поправьте меня, если я ошибаюсь, не постулировал то, на чем основывается С++:

The zero-overhead principle is a C++ design principle that states:

  1. You don't pay for what you don't use.

  2. What you do use is just as efficient as what you could reasonably write by hand.

https://en.cppreference.com/w/cpp/language/Zero-overhead_principle

Как следствие, эти языки решали другие задачи.

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

Я бы дополнил. Современный язык программирования, это прежде всего, инструмент для решения определенной задачи. Инфраструктура и тулчейн важны, если их требует задача. Хорошая поддержка в IDE, отладка, пакетные менеджеры и т.д. нужны не всегда, но если говорить про языки, претендующие на роль языков общего назначения, то да, инфраструктура и инструменты точно должны быть, как минимум в обозримых планах.

Вы упомянули следующие мотивы для создания нового языка программирования:

  • Личный творческий порыв

  • Академический интерес

  • Поддержка предметной области

  • Предоставление интерфейса к набору библиотек

  • Причины коммерческого характера

  • Безопасность

  • Производительность

  • Укрупнение или сужение семантики

  • Имиджевые причины

Я бы сюда добавил ещё такие пункты:

  • Проработка новых идей и концепций

  • Повышение качества ПО, обеспечение его надёжности

  • Более эффективное использование всё время растущего числа ядер процессоров

Хотя часть этих тем могут скрываться под "академическим интересом", но в том то и дело, что интерес может быть очень даже практический.

Под понятием "производительность" могут скрываться почти противоположные цели. Под этим одни имеют в виду повышение производительности программиста, даже в ущерб скорости работы программ. Другие подразумевают максимальную скорость работы программ, даже если для их разработки потребуются большие трудозатраты.

Личные творческие порывы приводят к разработке собственного ЯП, а далее хочется об этом поведать всему миру. Но поскольку большинство таких языков ничего нового предложить миру не могут, то у читателей статей о новых ЯП накапливается раздражение: "Ну вот, опять". Лично я считаю, что только те языки имеют право на чьё-то внимание, если в них есть какое-то заметное движение вперёд.

Я бы сюда добавил ещё такие пункты

Прекрасное дополнение, спасибо!

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

А должны? Прямо вот каждый, кто приходит в область строительства языков и компиляторов должен сказать что-то новое? Понятно, что часто, в силу отсутствия опыта у авторов зашкаливает ЧСВ и хочется завоевать мир. Но если не копировать существующее, не пытаться предложить что-то свое, не обязательно новое, но именно свое, то и нового не будет.

Чтобы продвинуть свой язык, не имея в нём ничего нового, надо быть компанией уровня Microsoft или Google, тогда твоим C# или Go повезёт. Или понравиться Google, как случилось с Kotlin. Или найти уникальную в этот момент нишу, как случилось с PHP. Иначе шансы призрачны. Новые перепевы старых мотивов редко вызывают интерес.

Новые идеи и концепции часто находят применение через новые языки. Например, ООП нашло себе применение сперва через Симулу-67, потом SmallTalk, а потом началось широкое распространение. То же случалось с функциональным программированием или выводом типов. Rust предложил свою концепцию владения, подчистил некоторые огрехи синтаксиса Си (хотя и не все), и в результате пробивает себе дорогу.

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

я бы еще добавил "в учебных целях". На самом деле это частый случай. Результат дальше никуда не идет, но иногда это совершенно необходимая ступень для попыток создать реальный инструмент.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории