Pull to refresh

Comments 22

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

"Язык должен быть удобен для пользователя" -> php всё необходимое есть из коробки

"Программисту нельзя доверять" -> вообще-то смысл немного другой низкоквалифицированным специалистам доверять опасно. Поэтому надо сделать больше проверок богу проверок, зато за счет дармовой вычислительной мощности можно использовать дешевую рабочую силу. Поэтому Go, C#, TS, Dart. А сейчас вообще llm любыми способами пытаются впарить.

"Чем меньше нажатий клавиш - тем лучше" -> APL

Почему D не заменил C++ потому что очень дорого. И да Rust это для мазохистов. Есть более достойные кандидаты например zig, nim, crystal.

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

>> "Язык должен быть удобен для пользователя" -> php всё необходимое есть из коробки

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

>>Почему D не заменил C++ потому что очень дорого.

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

Rust это для мазохистов

почему?

Даже не знаю, как объяснить. Первое что вызвало отвращение это бинарники самого раста. Отсутствия offline дистрибутива. Язык программирования не должен быть монстром. Да и идея что borrow checker это серебряная пуля, так себе. Попробуйте zig, v и потом rust.

""В расте всё хорошо, всё замечательно, только лопату сломали. Как сломали? Сломали когда вашу лошадь хоронили, Моя лошадь умерла. Да, сгорела вместе сконюшней....""
https://youtu.be/bKyxOaP-mDg?t=3120

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

А запреты на продажу алкоголя породило всплеск роста организованной преступности которые заработали на этом целые состояния. Жил бы язык Java который по идее должен был быть простым языком поэтому был топорным и без излишеств. Но программистом это не пришлось по душе и они обмазали все плагинами с когенерацией и куче рефлексией, что сделало работу с Java на некоторых проектах сходной с работой на JS по предсказуемости.

Время программистов стоит денег(видимо это знали всегда, поэтому begin/end из Паскаля совершенно не прижились, а С получил сильный буст из-за своей синтаксической простоты).

Ну да. Программисты это - это стенографисты, они только непрерывно печатают код и написание лишнего символа стоит денег заказчику. C победил паскаль за счет того что продал свою производительность а не за счет какой-то синтаксической простоты.

Пожалуй, максимально это понимали при дизайне Go, поэтому имеем

А где пример вида?

data, err:= fu()

if err!= nil {
  log.Fatal(err)
}
/*вместо*/
var data = fu()

никто не делает бенчмарки C++ против Go

https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/go-gpp.html

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

Если бы бизнесу была важна простота и скорость компиляции то он бы везде использовал Python. А вот Go как раз взлетел как раз из-за того что бизнесу внезапно понадобилась еще и производительность.

Си победил Паскаль из-за случайного совпадения, что Windows была написана на Си (хотя классическая Mac OS – на Паскале), а недосягаемо лучший компилятор Паскаля выпускал конкурент Microsoft.

Если бы Фил Кан пошёл работать в Microsoft, а не основал Borland, то сейчас бы о языке Си почти никто не вспоминал.

(Ну, отчасти ещё и Unix сыграл, конечно).

А так это два примерно одинаковых языка.

хотя классическая Mac OS – на Паскале

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

недосягаемо лучший компилятор Паскаля выпускал конкурент Microsoft.

Трубопаскаль это не компилятор, а IDE. Его хорошесть заключалась в том что из коробки есть и компилятор, и документация, и текстовый редактор - всё что надо в эпоху до Интернетов чтобы просто сесть и начать работать. Я скорее поверю что случайность - мир пошёдший по пути "высокоуровнёвого ассемблера" C вместо пути Lisp-машин без compile time и по пути неэффективного универсального языка описания структур json вместо эффективного лисповского. Для кросплатформенного жонглирования битами, вроде возможности запустить одну и ту же программу, допустим, на Big-Endian и Little-Endian, у Паскаля нет выразительных средств. И ЯП разрабатываемый по принципу Собор, а не Базар, вряд ли годится на роль "нашего всего".

Турбопаскаль это и IDE и компилятор. При этом и то, и другое отличалось немного от Borland Pascal, который был дороже, и выходил за стандарты языка Pascal. Другое дело, что как и с C++, компилятор далеко не лучший. А убили его появление Delphi с его Object Pascal и отказ Borland от дальнейшей поддержки турбика, что эволюционно не верное решение.

PS: а еще Turbo Pascal был лучшим, для программирования... на ассемблере под х86 )))

К тому времени, когда разворачивалась основная конкуренция Си и Паскаля, Паскаль уже весьма далеко отошёл от Вирта и его собора. Радикально он был развит в UCSD и затем в Borland. Собственно, и строк в Паскале в обычном понимании до UCSD не было никаких.

Дело в Турбо Паскале было не только в самом по себе комплекте IDE, поскольку Microsoft выпускала номинально аналогичный ему продукт Quick Pascal. Но силы были не равны.

Что касается Лиспа, то он не приобрёл широкого распространения, в основном, по двум причинам. Во-первых, в 20 веке программы на Лиспе выполнялись медленно из-за очень маленького доступного объёма памяти и постоянной работы сборщика мусора в связи с этим. Во-вторых, Лисп сам по себе – очень семантически насыщенный язык, плотность семантики на единицу текста в нём огромна, что вообще характерно для функциональных языков. На тех же двух страницах кода, на которых программист C++ совершит какое-нибудь элементарное действие вроде создания и инициализации класса, на Лиспе пишется интерпретатор Лиспа. Далеко не все программисты готовы к такой интенсивной работе ума.

Насчет begin end - сейчас end автоматически печатается после end при нажатии enter в паскале. В процедурах SQL server тоже используется begin end , но end не вставляется автоматически. В общем это не проблема. Проблема всегда в том что слишком много зависимостей в проектах делает жизнь этих проектов довольно трудной для сопровождения и порой тормозной. Быстрота и простота - вот какой должен быть девиз разработчика.

Вообще меня начинает несколько подбешивать мантра, звучащая от каждого попугая, что якобы "Go это простота! Простота это прекрасно!"

Факторов, влияющих на рост популярности одних языков, и падение других, гораздо больше, чем выделено в статье. Огромную роль играют компании, делающие выбор языка и пропагандирующие и вкладывающиеся в его развитие (Pascal vs C++ и Java). Сообщества свободно-распространяющихся инструментов и компиляторов: чем оно больше, тем лучше (C vs Pascal и Rust). Подогреваемый компаниями и блогерами интерес к определённым подходам, реализованным в конкретном языке (Node.js vs PHP, Perl, Ruby). Развитие компьютерных технологий, эпоха Интернета, приводят к тому, что взлетают те языки, которые больше подходят под новые приложения (Perl vs PHP).

Есть масса, концептуально интересных и сильно отличающихся от мэйнстримных языков (Haskell, Lisp, Idris, Self, Io, Prolog), но они не смогли тех заменить. Почему? Смотри выше.

Наконец, есть нишевые языки, такие как Erlang, 1C, Shell, которые никто просто так, в здравом уме не побежит заменять на что-то другое, более модное. Да, мода тоже имеет значение...

>> Факторов, влияющих на рост популярности одних языков

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

>> Огромную роль играют компании, делающие выбор языка и пропагандирующие и вкладывающиеся в его развитие (Pascal vs C++ и Java). Сообщества свободно-распространяющихся инструментов и компиляторов: чем оно больше, тем лучше (C vs Pascal и Rust). Подогреваемый компаниями и блогерами интерес к определённым подходам, реализованным в конкретном языке (Node.js vs PHP, Perl, Ruby). Развитие компьютерных технологий, эпоха Интернета, приводят к тому, что взлетают те языки, которые больше подходят под новые приложения (Perl vs PHP).

согласен

for i := 0; i < 10; i++ /*вместо*/ for (i := 0; i < 10; i++)

Вот это для меня самая раздражающая тема в Go. Когда привык писать if без скобок, а потом пишешь что-то на другом языке, машинально забываешь скобки и "ой бл забыл"

"begin/end" и сколько времени он украл бы у программиста? А как насчет java? Его тоже как то характеризует слишком многословным. На самом деле все кроется в факте. Знает программист то язык или нет, и сколько времени надо будет что бы переучится

Ну украл бы некоторое не нулевое время. У java есть много других приемуществ, {} строго лучше чем begin/end, но это не означает, что любой лаконичный язык сразу станет супер популярным

Имхо, беда begin end не в многословности, а что они сливаются с окружающим кодом. Глаз не цепляется. Я наоборот многословность считаю плюсом. Но с begin end пример плохой. Это не многословность. Многословность это когда тебе надо точно писать: struct StructName. Когда надо определять каждый пользовательский тип, и делать это в отдельном блоке. И тд.

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

Нисколько это не тратит времени. Достаточно нажать две первые буквы и уже можешь нажать Enter для автоматической вставки begin и end.

на самом деле чем меньше в языке возможностей, тем лучше

значит самый лучший язык тот, на котором невозможно написать ничего. Что ж...

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

Sign up to leave a comment.

Articles