Комментарии 45
Сам только на джаве писал, судить не берусь, но имхо лучший язык программирования это тот, на котором написаны самые полезные программы, так что 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#?
Как и OLaml и прочие экзистенциальные его подобия.
Кстати, на сайте SML, F# тоже записан в двоюродные братья.
Есть и C-like, и что?
Прямо на скользкую дорожку ступили.
Это же просто инструмент, да они во многом пересекаются, но то, что можно написать на одном языке, будет сложнее на другом, и наоборот.
А как же языковое взаимодействие, встраиваемые языки? Пишешь игру, условно, на C++, а логику на скриптовом Lua
Только поддержку, например, графики, которая триста лет в жабе есть, они сначала отпинывали, а с выходом MAUI сказали «его будет контрибьютить сообщество», но ещё не факт что от сообщества будут принимать правки, может опять скажут `We also do not intend to accept contributions that provide cross-platform implementations`
Порог вхождения в Rust выше, чем у C++вы серьезно?
Лучшей документации, чем у Rust, лично я не видел ни у одного ЯП.
С++ — это полный ад и содомия, с точки зрения порога вхождения.
Считать мейнстримным раст, но не считать тот же хаскель — как-то очень странно.
Rust все же Си-подобный императивный, хоть и с примесью ML.
Понятное дело, каждый кулик своё болото хвалит и говорю я с позиции человека, который пишет на расте, но мне кажется, что вокруг него сейчас хайпа куда больше. Это ещё не делает язык мейнстримом, но по моим ощущениям, раст сейчас набирает популярность, а haskell — закрепился в небольшой нише и всё.
Опять же, это ничего не доказывает, но (мне) не попадаются новости о новых проектах на хаскеле или переписывании на нём чего-то существующего.
Даже стало любопытно как-то более объективно сравнить. Наверное, проще всего это сделать по вакансиям? Не знаю где лучше смотреть, но на stackoveerflow по запросу "haskell" показывают четыре вакансии, но только одна из них "Haskell Developer" (остальные три: Scala Engineer, Blockchain Technical Writer и Cloud Engineer (python, go, c)). По расту находится 43 вакансии и, на первый взгляд, с релевантностью там чуть лучше.
P.S. Испытываю к хаскелю интерес и периодически порываюсь как следует его освоить. Обычно читаю какую-нибудь книжку, но без практики всё быстро забывается. В общем, в большой популярности языка я даже заинтересован, тем более, что они с растом в разных нишах.
Опять же, это ничего не доказывает, но (мне) не попадаются новости о новых проектах на хаскеле или переписывании на нём чего-то существующего.
Ну это, вероятно, вопрос погружения. Мне такие вещи попадаются регулярно, от мелких стартапов до всякого крупного ритейла.
Если смотреть по Indeed, то по расту там примерно 2400 вакансий, по хаскелю — под 500, по релевантности они плюс-минус похожи друг на друга.
Открываем сайт
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 низкоуровневым языком.
Лучший язык программирования