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

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

Зашел почитать про умирающий Ruby, не разочарован.
Oh boy, here we go again.
Сам только на джаве писал, судить не берусь, но имхо лучший язык программирования это тот, на котором написаны самые полезные программы, так что 1с

Но сама то 1с на с++ написана:)

Go?
Несмотря на успех в своей нише, в целом тут все так грустно и очевидно, что без лишних слов перейдем дальше к Rust.

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

У современных стандартов C++ сильная типизация. Слабость может возникнуть разве что если умышленность кастовать все к void*

То-то я как-то схлопотал случайно неверное хеширование из-за неявного каста bool к int. В C++ типизация много где слабая. Целочисленные типы с неявным апкастом, object slicing и много чего ещё.

Этот каст ограничен стандартом начиная с C++14

Так как в языке присутствует неявное приведение типов, то называть его языком со строгой типизацией нельзя.
int a = 2;
char b = 'L';
int c = a + b;


вот так уже не будет работать или это не считается?
действовать будем методом исключения по четким критериям
Прежде всего, язык должен быть достаточно мейнстримным,
Не каждый пожелает (а еще меньше смогут) разбираться в абстракциях C++, поэтому, несмотря на лучшие пока показатели по скорости, отложим его вместе с более низкоуровневым Си для узких мест.
Но C# более стройный синтаксически

Вы это называете "четкими критериями"? Выглядит как банальная вкусовщина.


Общая практика в индустрии показывает что слабая типизация однозначно вредит читаемости, поддерживаемости и порождает большое количество ошибок

Это утверждение нуждается в доказательстве. Таком, знаете, подкрепленным исследованиями.

Вы хотите сказать, что пагубность подхода, когда число можно сложить со строкой и не получить при этом предупреждения (что и является эталонным примером слабой типизации), нуждается в исследованиях?
А то что наступать на грабли плохо, тоже нужно доказать академически? :)

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

Выводы поверхностные и необъективные.

А лучшие языки программирования, ИМХО — Java/Kotlin, C/C++/C# и Python.
Что значит лучший язык программирования!?!?!

Вы когда садитесь есть суп, то выбираете — ложку. А если макароны — вилку.
Когда сами едите суп столовую ложку берете, когда ребенка кормите супом — чайную ложку.

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

Полиглот-программирование давно подвергается критике.

Полиглот-программирование давно подвергается критике.

А что в программировании не подвергается критике?


В компании, в которой я работаю, большинство людей пишет на C#. Вы предлагаете фронтенд тоже писать на C#? Найти БД, поддерживающую C# в качестве языка программирования? Data Science-исследования писать на C#?

Вашей компании повезло. В нашей компании необходимо знать 2-3 языка на минимум лучше чем хорошо). Не всем легко набрать большой штат.
А как получилось, что нужно именно знать и именно 2-3 языка? Это же был собственный выбор, или так сложилось?
Кадровый дефицит. Front+Back надо тащить + микросервисы на Go (сильно помогает разгрузить тяжелые части).
Вроде ж не первое апреля и не пятница. К чему этот толстый наброс?
НЛО прилетело и опубликовало эту надпись здесь
Std.ML имеет странный синтаксис, потому и не взлетел.

Как и OLaml и прочие экзистенциальные его подобия.

Кстати, на сайте SML, F# тоже записан в двоюродные братья.
НЛО прилетело и опубликовало эту надпись здесь
Именно потому появилась целая категория для ЯП с тегом «ML-like»
НЛО прилетело и опубликовало эту надпись здесь

Прямо на скользкую дорожку ступили.
Это же просто инструмент, да они во многом пересекаются, но то, что можно написать на одном языке, будет сложнее на другом, и наоборот.
А как же языковое взаимодействие, встраиваемые языки? Пишешь игру, условно, на C++, а логику на скриптовом Lua

>> Долгое время C# выглядел практически идеальным по кроссплатформености

Только поддержку, например, графики, которая триста лет в жабе есть, они сначала отпинывали, а с выходом MAUI сказали «его будет контрибьютить сообщество», но ещё не факт что от сообщества будут принимать правки, может опять скажут `We also do not intend to accept contributions that provide cross-platform implementations`
И где скачать компилятор без ИДЕИ?
Камон.
Порог вхождения в Rust выше, чем у C++
вы серьезно?
Лучшей документации, чем у Rust, лично я не видел ни у одного ЯП.
С++ — это полный ад и содомия, с точки зрения порога вхождения.
Спасибо за развлечение: меня искренне повеселило, как «изящно» вы отмахнулись от Go — ссылкой на очередной невежественный вброс очередного «специалиста», не способного отличить ООП от мантры «полиморфизм, инкапсуляция, наследование».

Считать мейнстримным раст, но не считать тот же хаскель — как-то очень странно.

Rust все же Си-подобный императивный, хоть и с примесью ML.

Понятное дело, каждый кулик своё болото хвалит и говорю я с позиции человека, который пишет на расте, но мне кажется, что вокруг него сейчас хайпа куда больше. Это ещё не делает язык мейнстримом, но по моим ощущениям, раст сейчас набирает популярность, а haskell — закрепился в небольшой нише и всё.
Опять же, это ничего не доказывает, но (мне) не попадаются новости о новых проектах на хаскеле или переписывании на нём чего-то существующего.


Даже стало любопытно как-то более объективно сравнить. Наверное, проще всего это сделать по вакансиям? Не знаю где лучше смотреть, но на stackoveerflow по запросу "haskell" показывают четыре вакансии, но только одна из них "Haskell Developer" (остальные три: Scala Engineer, Blockchain Technical Writer и Cloud Engineer (python, go, c)). По расту находится 43 вакансии и, на первый взгляд, с релевантностью там чуть лучше.


P.S. Испытываю к хаскелю интерес и периодически порываюсь как следует его освоить. Обычно читаю какую-нибудь книжку, но без практики всё быстро забывается. В общем, в большой популярности языка я даже заинтересован, тем более, что они с растом в разных нишах.

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

Ну это, вероятно, вопрос погружения. Мне такие вещи попадаются регулярно, от мелких стартапов до всякого крупного ритейла.


Если смотреть по Indeed, то по расту там примерно 2400 вакансий, по хаскелю — под 500, по релевантности они плюс-минус похожи друг на друга.

Лучший язык программирования, раз уж вы настаиваете на типизации — Crystal.

Открываем сайт


Null reference checks

All types are non-nilable in Crystal, and nilable variables are represented as a union between the type and nil.

Закрываем сайт

А в чем тут проблема?

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

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

Crystal не знаю и может что-то недопонял, но не вижу связи между процитированным и выводом. Нельзя сделать что-то вроде (String | Nil) | Nil?

Это они, конечно, зря.

Rust же не даст спрятаться от решения вопросов безопасности и размещения в памяти и из-за этой необходимости, он (внезапно!) превращается в достаточно низкоуровневый язык, сравнимый скорее даже с Си, чем с C++.

Все-таки концепция владения/заимствования — это достаточно высокоуровневая идея, вокруг которой построен весь язык. Она относится не обязательно только к памяти, а касается вообще любых ресурсов, которые могут быть представлены программными объектами в Rust. Сама концепция отображается в машинное представление не сказать чтобы сильно прозрачно, она довольно абстрактна, а от низкоуровневого языка обычно ждешь прямого соответствия его концепций аппаратной архитектуре машины. То, что сама концепция владения непривычна и программист не может переиспользовать свой опыт, полученный в других языках, не делает еще Rust низкоуровневым языком.

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