После прочтения всех сообщений, кандидатами стали Rust, Go, Haskell, F#, Lisp.
Пока остановился на Rust. Попробую переписать на нем пару небольших проектов. Концепция и синтаксис очень нравятся, а move-семантика и RWlock знакомы по предыдущему опыту.
По Go просмотрел местный тур. Местами понравилось (defer, go, синтаксис лямбд), местами нет. Неконсистентный синтаксис объявления переменных и в общем-то плохо, а вариант с := меня, как начинавшего с Паскаля, почему-то угнетает. Хотя я понимаю, что пацаны просто хотели дефайнить переменные непосредственно в for и if.
Haskell скорее всего будет языком, на котором я попробую функциональщину. Хотя, если вдруг друзья будут делать игру на Unity и пригласят поучаствовать, может быть попробую F#.
Lisp тоже интересно попробовать. Может быть даже вперед Хаскеля, поскольку скорее просто попробовать.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, kaa.python, Вы писали:
KP>Rust не позицируется как замена C++, максимум замена C.
Познакомился с Rust подробнее. Это именно замена С++. Ну или замена С, но в том же смысле, как С — замена ассемблеру. То есть это язык на уровень выше, чем С и С++ (также как когда-то С оказался на уровень выше ассемблера).
Никакими оригинальными С там не пахнет. Просто С++ это условно "С с классами", а Rust — это "С с шаблонами и методами". Только далеко уже не С
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
B>Haskell скорее всего будет языком, на котором я попробую функциональщину. Хотя, если вдруг друзья будут делать игру на Unity и пригласят поучаствовать, может быть попробую F#.
Плюс можно посмотреть какие-нибудь ОКамлы и Эрланги. Нцать лет назад я в итоге пробежался по пяти или шести языкам. Проблема со многими ФП в том, что у многих мало практичности и много плясок вприсядку на ровном месте.
Но подход «пощупать там, пощупать здесь» вполне работает.
Здравствуйте, Basil2, Вы писали:
B>Познакомился с Rust подробнее. Это именно замена С++. Ну или замена С, но в том же смысле, как С — замена ассемблеру. То есть это язык на уровень выше, чем С и С++ (также как когда-то С оказался на уровень выше ассемблера).
Что бы быть заменой чего-то, крайне желательно либо быть лучше в какой-то конкретной нише (что проделали Java, C#, Go, Python) либо предлагать обратную совместимость при наличии лучших возможностей (C++ как замена Си). А вот в случае в Rust тут сложности. Он не предлагает никакой серебряной пули (ну, пытается со своей защитой памяти, но это работает только с теми, кто нормально C++ не знает и слышал страшилки образца pre-C++11) и при этом не дает обратной совместимости с C++.
B>Никакими оригинальными С там не пахнет. Просто С++ это условно "С с классами", а Rust — это "С с шаблонами и методами". Только далеко уже не С
С шаблонами и интерфейсами трейтами, наверное? Или о чем-то другом речь?
Здравствуйте, kaa.python, Вы писали:
KP>Что бы быть заменой чего-то, крайне желательно либо быть лучше в какой-то конкретной нише (что проделали Java, C#, Go, Python) либо предлагать обратную совместимость при наличии лучших возможностей (C++ как замена Си). А вот в случае в Rust тут сложности.
Быстро он С/С++ конечно не заменит, это да. Но это особенности предметной области — новый системный софт создают гораздо реже, чем новый веб-сервер.
KP>Он не предлагает никакой серебряной пули (ну, пытается со своей защитой памяти, но это работает только с теми, кто нормально C++ не знает и слышал страшилки образца pre-C++11) и при этом не дает обратной совместимости с C++.
"Защита памяти" — это псевдоаргумент, которое противники Rust выдумали, чтобы потом самим же и опровергать. В Rust очень много вещей, заточенных на создание надежного кода (паттерн-матчинг, обработка ошибок через специальные типы, итераторы, алгебраические типы, встраивание тестов и т.д.). А "защита памяти" обычно это аргумент плюсовиков, которые уже оценили RAII но не пробовали Rust.
Потому что как раз те, кто знает современный С++, восхищаются моделью памяти Rust. Серебряной пули там действительно нет, но простота и строгость модели воспринимаются очень хорошо. Тем более что база модели это время жизни ссылок и move-семантика — как раз то, что пошло в ход с С++11.
KP>С шаблонами и интерфейсами трейтами, наверное? Или о чем-то другом речь?
О них, но "трейты" странновато звучит.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, Vladek, Вы писали:
V>Мой список, в порядке убывания интереса: D, Lisp, Rust, Go. V>Лучше всего писать код на этих языках, но я пока остановился на приобретении книг. Если честно, просто не хватает времени вплотную заняться изучением.