Комментарии 60
Самое смешное, что над Go была самописная надстройка с названием… Odin! Мне интересно, как бывшие коллеги будут плеваться, если язык наберет популярность.
Я думаю, что лучше сравнивать его с растом. Который получился большим, сложным и пока все еще сырым, вопреки ожиданиям. Го, все-таки не системный язык. А какая-то замена сишечке очень нужна.
Если сишечке и нужна замена, то явно не из-за недостатка сахара в синтаксисе, а из-за сложности разработки крупных приложений с требованиями к надежности. Rust пытается решить эту задачу с помощью borrow checker'а (успешно или нет — это отдельный вопрос). Какую проблему пытается решить Odin — пока непонятно.
Чтобы не страдать от интеропа, не раздувать стек, иметь взаимозаменяемую команду...
Довольно скользкий вопрос, что системно, а что нет в наше время. Мой любимый пример — Picobit Scheme. Реализация языка Scheme (это Lisp такой), которая позволяет в 20 килобайт утрамбовать полноценный многопоточный http-сервер и запускать его на 64 килобайтах памяти, мигая при этом лампочками и двигая моторчиком.
Границы в языках уже совсем размыты, поэтому не стоит, мне кажется, напряжённо их искать. Нужно просто смотреть на то, что можно на языке делать, а что нельзя.
На Go можно программировать микроконтроллеры.
C#, кстати, никто тоже не мешает компилировать сразу в нативный код, включая в исполняемый файл его жирный рантайм. Microsoft для некоторых платформ предлагает такой вариант. Но это не делает C# системным языком. А ведь C# позволяет явно выделять память на стеке (stackalloc), поддерживаются структуры, и даже есть поддержка указателей в unsafe блоках кода.
На Go можно программировать микроконтроллеры.
Вы точно говорите про микроконтроллеры с их типичными ограничениями типа 2 килобайта RAM? Современные SoC на порядки мощнее этого, но обычно их не называют микроконтроллерами. Насколько я понимаю, Go не может работать без рантайма (кому-то же нужно собирать мусор и управлять его горутинами), и только этот рантайм вряд ли заведётся на типичном микроконтроллере. C, как системный язык, может обходиться без своей C Runtime Library — вы можете писать код, который будет 100% под вашим контролем. Rust, насколько я знаю, также позволяет отключать рантайм. Это конечно же накладывает кучу ограничений, но для некоторых задач это необходимость.
К слову, на C# тоже можно писать под «микроконтроллеры». .NET Micro Framework заводится на SoC с 64КБ RAM и 256КБ флеш-памяти. Это то что вам нужно что-бы что-то совсем примитивное запустить. Хотите поморгать светодиодом? И вот вам сразу нужно уже так много ресурсов. А на старом добром C можно писать целые игрушки для Dendy, у которой всего 2КБ RAM и 32КБ ROM (да, целая Dendy сравнима с современными микроконтроллерами по доступным ресурсам).
Напомню, что речь изначально шла о том, является ли Go системным языком программирования, а не о том, что он плохой или хороший язык сам по себе. Его создавали для разработки микро-сервисов, и для этого он подходит хорошо. Но он слишком высокоуровневый (скрывает много деталей от программиста) и недетерменированный, чтобы называть его системным языком.
Вы имели в виду перегрузку операторов?
Оператор перегрузки операторов
The design goals of Odin were explicitness and simplicity. Operator overloading is very easily abused and can be used to do many magical things. A procedure is clearer and more explicit. Array programming is available in Odin; this removes some of the need for operator overloading when creating mathematical libraries.
Кто-то наконец дописал курсач?
Да, там можно по желанию заниматься садо-мазо в стиле С, но он даже для новичков вполне дружествен.
P.S. Подумалось, что к теме садо-мазо ближе Rust. Он программисту говорит: «эй, программист, так делать низя!» — и бьёт за это по рукам :) Это, конечно, не означает, что Rust — плохой язык
И теперь можно вернутся к теме — так зачем какой-то новый язык, если существующие покрывают все потребности?
P.S.: Rust не бьет по рукам, там есть возможность перейти на полный unmanaged, если у кодера хватит духа =) Суть в том, что оба языка дают работать в safe зоне, и при том не терять производительность. Да, я Rust только начал изучать — и прозрел, это тот язык, который после С мне нравится.
Еще Odin язык программирования
А то мало таких языков как-то
Рынок языков насытился. В начале девяностых можно было в одиночку написать что-то типа PHP / Python / Ruby и оно сразу набирало критическую массу пользователей, потому что за неимением альтернатив это было лучше, чем ничего. Сейчас же языков много и чтобы с ними серьезно конкурировать, недостаточно просто придумать красивый синтаксис и реализовать компилятор: нужно еще иметь поддержку среды разработки, библиотеки, документацию, примеры, да и вообще демонстрировать какую-то гарантию того, что проект не заглохнет через пару месяцев. А такое могут себе позволить только крупные компании или научные заведения с приличными бюджетами.
Да и многие из существующих языков выросли из персональных проектов. Тот же Rust, который поддерживается Mozilla, изначально был персональным проектом одного из сотрудников. Если у вашего языка есть какая-то уникальная фишка — его вполне могут заметить и профинансировать, или хотя бы позаимствовать вашу идею для новой версии уже существующего языка, что тоже достижение.
Люди обычно создают новые языки программирования не для того, чтобы на них заработать, а потому что им это интересно.Самовыражение довольно быстро затухает без признания со стороны. Вопреки ожиданиям многих разработчиков языков, признание само по себе не приходит и даже с революционностью его разработки кореллирует мало.
Языки сами по себе — всегда убыточная область. Зарабатывают в основном на смежных с ними вещах — тренингах, инструментарии, библиотеках, или экосистеме в целом.
Rust, который поддерживается Mozilla, изначально был персональным проектом одного из сотрудниковНу да, чтобы язык заметили, нужно хорошо решить актуальную проблему бизнеса и заручиться поддержкой крупной компании.
Инструментарий разработки языков упростился существенно даже с тех пор, когда создание трансляторов было упражнением для студентов младших курсов в хорших вузах. В наши дни совсем не так тяжело запилить с нуля свой идеальный язык программирования и сделать на нём игру (популярный вариант). Много такого рода проектов в интернете. Так что, если автор адекват и не хочет сделать сразу убийцу Haskell или Си++, то почему бы и нет? Для мелких приложений вполне себе вариант, да ещё и с ненулевой вероятностью словить хайп вокруг проекта. Поэтому нас ждёт, мне кажется, наоборот, эпоха яростного языкотворчества, которая закончится тем, что всем наскучат игры с синтаксисом, и народ найдёт счастье в чём-нибудь Lisp-подобном.
Сделать мини-язык под собственные нужды или написать курсовую в вузе — это легко. А вот реализовать язык, люди со стороны будут готовы использовать в продакшене — это небо и земля по сравнению с предыдущими примерами. Разработка инструментария немного упростилась, но требования к промышленному языку увеличились гораздо сильнее.
Ваш пример подтверждает мои слова :) C, Basic, Scheme, Python, Java — все появились более 20 лет назад, когда ситуация была иная. Rust — недавно, но при поддержке Mozilla.
Сколько вы знаете популярных языков, которые появились в последние 10 лет и не были спонсированы корпорацией?
Clojure сложно назвать "новым языком" — это же по сути JVM-реализация LISP, которому уже за полтинник.
Спекулировать насчет меняющихся вкусов можно долго, но статистика говорит об обратном: шанс "взлететь" без поддержки сравним с шансом выиграть в лотерею. Впрочем, ни покупателей билетов, ни разработчиков языков это не останавливает :)
Так, собственно, как ничего не останавливаеь разработчиков прочих велосипедов. Раз уж Lisp упомянули, то вся наша текущая экосистема была уже разработана в 80-ых, выкинута на помойку по непонятным причинам, а потом переизобретена заново. Такова уж особенность индустрии
P.S. Clojure, всё же, совсем не Lisp по своей семантике. От Lisp он гораздо дальше, чем вот этот самый Odin от Go.
Вышла бета-версия Odin — ещё одного языка программирования