Здравствуйте, Basil2, Вы писали:
B>В молодости случайно купил книжку по Forth и получил огромное удовольствие от его изучения. Необычный, минималистичный, расширяемый — на фоне Pascal и Basic это было очень интересно. Но поработать с ним к сожалению не пришлось.
B>Хочу повторить эти ощущения и заодно выучить что-то полезное. Основной язык сейчас C++, также иногда использую Python, JavaScript, LUA. Чтобы такого изучить? Желательно, чтобы это потом пригодилось, а в идеале чтобы еще найти работу удаленно.
Я буду банален, но учить язык толку вообще ноль, особенно если целью выступает расширение возможностей поиска работы. Надо с предметной областью разбираться и из неё уже брать язык.
B>Основные кандидаты сейчас это F# и Rust. F# — потому что название напоминает Forth Ну и это функциональный язык, т.е. несколько другая концепция чем у С++ — как в свое время другая концепция была у Forth. Опять же функции мне кажется должны чем-то напоминать слова у Forth.
Если же язык хочется ради языка, то стоит взять что-то совсем уж необычное, позволяющее расширить твое мировоззрение. По мне так при твоем наборе языков, лучше всего будет что-то функциональное. Clojure/Scala – если хочется залезть в нишу JVM, F# – если хочется к .NET, Elixir/Erlang – если интересная разработка бэкенда ну и Haskell/OCaml – если хочется и дальше делать что-то для десктопа.
B>Rust — потому что он позиционируется как замена С++. То есть я рассчитываю на тот же эффект, что был при изучении C#. Ну и жалко свой многолетний опыт по С++, а в Rust он вроде бы пригодится. И еще мне кажется, что Rust можно выучить. Про С++ я к сожалению понял, что он уже не умещается в моей голове. Стандарт С++11 внес много хороших плюшек, но после 14 и 17 стало понятно, что вещей к изучению там море. А я люблю понимать, что знаю язык от и до, но это не про плюсы
Rust не позицируется как замена C++, максимум замена C. Кроме того, если C++ в голове не помещается, то Rust и подавно не влезет, там своих заморочек вагон и они не менее заковыристые. Возьми что-то попроще, тот же Go, я его вообще всем последнее время советую
Здравствуйте, Basil2, Вы писали:
B>Хочу повторить эти ощущения и заодно выучить что-то полезное. Основной язык сейчас C++, также иногда использую Python, JavaScript, LUA. Чтобы такого изучить? Желательно, чтобы это потом пригодилось, а в идеале чтобы еще найти работу удаленно.
B>Что скажете?
Я огромное удовольствие получил от изучения языка Java. Очень изящный язык и решения на нём. Правда, думаю, после выхода клона Java — C# не сильно много нового можно будет узнать.
S>>C# очень мощный язык и развивается. Берет нужное из разных языков.
K>Звучит устрашающе . В результате нечто переусложнённое и необъятное, угадал? (C# никогда не изучал и знаю про него только то, что он возник как клон Джавы)
C# на удивление практичен и прагматичен. Там есть, конечно, наследие со времен «мы как Java, только получше», но они явно стараются сделать язык приятным для использования в рамках изначальных ограничений.
Здравствуйте, Basil2, Вы писали:
B>В молодости случайно купил книжку по Forth и получил огромное удовольствие от его изучения.
эээ... вы понимаете, что языкодрочерство — это ламерский путь? Изучи хоть 50 языков, в голове особо много не прибавится. Профессионализм разработчика — далеко не язык, а ПЛАТФОРМА, которую он умеет юзать на 100%.
B>Основные кандидаты сейчас это F# и Rust. F# — потому что название напоминает Forth Ну и это функциональный язык
Другими словами, "язык, ортогональный человеческому мышлению и потому всё ещё сосущий на обочине мэйнстрима".
B>Rust — потому что он позиционируется как замена С++
Чушь. Никогда им не был и не будет. Rust — это просто поделие, от него индустрии ни тепло, ни холодно и он НИКОГДА не будет сколь угодно значимым.
B>Что скажете?
На моём веку из практических языков впечатлил и вдохновил только Nemerle. Я знаю проблемы Немерли, но вот спроси меня, "не будь C#, тогда что?" — однозначно Немерля. Великолепный язык, который как жемчужина, упавшая в дерьмо обыденности — лежит, отсвечивает и ждёт своего коммерческого носителя. Наимощнейший язык в .NET, незаслуженно игнорируемый быдломассой. Будь хотя бы у 50% разработчиков мозги, этот язык взлетел бы в считанные месяцы.
Вот. Я сказал.
Здравствуйте, kaa.python, Вы писали:
KP>Здравствуйте, D. Mon, Вы писали:
DM>>Ну так большинство реальных проектов относятся к первой группе. Все просто. Говна мамонтов много, а новых проектов на новом С++ очень мало, это вырождающаяся ниша.
KP>Ну а зачем же ты тогда споришь с тем, что современный C++ дает достаточно инструментов для безопасной работы с памятью? Что бы проект стал безопасным на Rust — его надо на него полностью переписать с нуля. Ну а в случае с C++ достаточно постепенно перевести кодовую базу в соответствие с современными стандартами, что как минимум ощутимо дешевле.
Здравствуйте, Basil2, Вы писали:
B>В молодости случайно купил книжку по Forth и получил огромное удовольствие от его изучения. Необычный, минималистичный, расширяемый — на фоне Pascal и Basic это было очень интересно. Но поработать с ним к сожалению не пришлось.
B>А некоторое время назад на работе решили писать тесты на C#. Начал изучать и также получил огромное удовольствие. Было очень приятно увидеть, как красиво обыграли многие неудачные моменты C++. (Правда, от этой идеи быстро отказались, и так я его и не изучил).
B>Хочу повторить эти ощущения и заодно выучить что-то полезное. Основной язык сейчас C++, также иногда использую Python, JavaScript, LUA. Чтобы такого изучить? Желательно, чтобы это потом пригодилось, а в идеале чтобы еще найти работу удаленно.
B>Основные кандидаты сейчас это F# и Rust. F# — потому что название напоминает Forth Ну и это функциональный язык, т.е. несколько другая концепция чем у С++ — как в свое время другая концепция была у Forth. Опять же функции мне кажется должны чем-то напоминать слова у Forth.
B>Rust — потому что он позиционируется как замена С++. То есть я рассчитываю на тот же эффект, что был при изучении C#. Ну и жалко свой многолетний опыт по С++, а в Rust он вроде бы пригодится. И еще мне кажется, что Rust можно выучить. Про С++ я к сожалению понял, что он уже не умещается в моей голове. Стандарт С++11 внес много хороших плюшек, но после 14 и 17 стало понятно, что вещей к изучению там море. А я люблю понимать, что знаю язык от и до, но это не про плюсы
B>Что скажете?
Здравствуйте, Basil2, Вы писали:
B>Я бы сказал что Rust это как будто из С снова делают С++, только с учетом опыта делания С++. B>Я думал о Go, но что-то он совсем не глянулся. С одной стороны странноватый синтаксис, с другой — все тоже самое как в С++. В Расте все же виден некий стержень, вокруг которого все делается.
В Расте народ борется с ветряными мельницами, по большому счету, вот и весь стержень. Управление памятью в C++ уже много лет как не проблема вот прям совсем, но по старой памяти многие используют эту страшилку до сих пор.
Здравствуйте, Basil2, Вы писали:
B>В молодости случайно купил книжку по Forth и получил огромное удовольствие от его изучения. Необычный, минималистичный, расширяемый — на фоне Pascal и Basic это было очень интересно. Но поработать с ним к сожалению не пришлось.
Аналогично. Только книжку купил не случайно, а под влиянием опыта программирования стековых калькуляторов — очень нравилось жонглировать значениями на стеке.
B>Хочу повторить эти ощущения
Мне это удалось с Go. Минималистичный, лаконичный, выразительный, мощный. И избавлен от детских болезней C и C++, что особенно восхитило. Очарованный Go, я бросил довольно прибыльную удалёнку на C++ и устроился на вдвое меньшие деньги в офисе)), но нисколько не жалею.
Если голову поломать, и заодно понять концепции, которые пока не вошли в мейнстрим, но вполне могут войти, то рекомендую Haskell. В нем функциональное программирование, функции высшего порядка, система типов, иммутабельность, функциональные структуры данных. Это все в нем невозможно не использовать. Для ознакомления и прокачки достаточно на уровне решения простых алгоритмических задач (project euler и т.п.). Не запариваться про лямбда-исчисление, теорию категорий и т.п., просто решать задачки.
Как полезная замена — наверное, стоит посмотреть на F#, но по красоте он не дотягивает до Haskell и накладывается отпечаток .NET
Если просто посмотреть, что в других языках бывает (другие концепции):
— Smalltalk - (я в свое время балдел), динамика, чистейший ООП (ВСЕ есть объект, даже if-else и while всего лишь методы в объекте), идеальный REPL (программа = runtime), функции высшего порядка, очень простой синтаксис. Сейчас не используется язык.
— Lisp-подобный язык какой-нибудь, современный — программа = данные, "отсутствие" синтаксиса (тот же форт, только лучше, понятнее для человека, а не компа).
— Пролог - необычный, странный. Сам по себе, наверное, не используется, но возможно выстрелит когда-нибудь datalog (пролог-подобный язык запросов)
— Ассемблер - чтобы понять как внутри комп работает. Система команд, регистры, память, условные переходы, флаги процессора. Простейшие алгоритмы посмотреть (циклы, поиск, вызов процедуры, реализация ООП), особенно кто на Си пишет.
UPD: Еще Erlang интересен, наверное.
Как писать крупные проекты на этих языках я не знаю. И вообще, у меня нет большого опыта их использования. Поэтому не могу сказать про полезность. Но мозги приходится поднапрячь при ознакомлении, и в дальнейшем это помогает.
Немножко не по теме, но все же: SQL, XSLT, XPath
И языки разметки, совсем не по теме, но зато очень полезно: XML, JSON, jsonlines/hjson, YAML, INI
В молодости случайно купил книжку по Forth и получил огромное удовольствие от его изучения. Необычный, минималистичный, расширяемый — на фоне Pascal и Basic это было очень интересно. Но поработать с ним к сожалению не пришлось.
А некоторое время назад на работе решили писать тесты на C#. Начал изучать и также получил огромное удовольствие. Было очень приятно увидеть, как красиво обыграли многие неудачные моменты C++. (Правда, от этой идеи быстро отказались, и так я его и не изучил).
Хочу повторить эти ощущения и заодно выучить что-то полезное. Основной язык сейчас C++, также иногда использую Python, JavaScript, LUA. Чтобы такого изучить? Желательно, чтобы это потом пригодилось, а в идеале чтобы еще найти работу удаленно.
Основные кандидаты сейчас это F# и Rust. F# — потому что название напоминает Forth Ну и это функциональный язык, т.е. несколько другая концепция чем у С++ — как в свое время другая концепция была у Forth. Опять же функции мне кажется должны чем-то напоминать слова у Forth.
Rust — потому что он позиционируется как замена С++. То есть я рассчитываю на тот же эффект, что был при изучении C#. Ну и жалко свой многолетний опыт по С++, а в Rust он вроде бы пригодится. И еще мне кажется, что Rust можно выучить. Про С++ я к сожалению понял, что он уже не умещается в моей голове. Стандарт С++11 внес много хороших плюшек, но после 14 и 17 стало понятно, что вещей к изучению там море. А я люблю понимать, что знаю язык от и до, но это не про плюсы
Что скажете?
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, Maniacal, Вы писали:
M>Я огромное удовольствие получил от изучения языка Java. Очень изящный язык и решения на нём. Правда, думаю, после выхода клона Java — C# не сильно много нового можно будет узнать.
Java красива до версии 1.5. После неё, имхо, покатилась под обрыв. Целостность потеряла. В практическом плане всё хорошо, но вот с точки зрения изящности не очень. Если для удовольствия надо писать, пишу на 1.4. Прям дистиллированное объектно-ориентированное программирование.
M>Я огромное удовольствие получил от изучения языка Java. Очень изящный язык и решения на нём. Правда, думаю, после выхода клона Java — C# не сильно много нового можно будет узнать.
C# очень мощный язык и развивается. Берет нужное из разных языков. Вот пример чего хотят в следующей версии https://www.c-sharpcorner.com/article/candidate-features-for-c-sharp-9/
Ну и учитывая кроссплатформенность и Xamarin.Forms там многое можно подчерпнуть
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Kernan, Вы писали:
K> K>Что это, если не мощь? K> Ну... хз. На С++ тоже можно.
Go со своей стандартной библиотекой заточен под относительно узкую область перекладывания данных по сети из одного места в другое — то, чем заняты 99% веб-сервисов. Можно на плюсах. Наверное можно и на питоне. Но в Go это сделано out of box что называется. Например, чтобы использовать tls session resumption & tickets в Go требуется одна строка. В плюсах (в зависимости от библиотеки) придется немного поприседать с "сырым" tls-сокетом и кэшем. Питонисты меня с моими хотелками пару лет назад послали далеко и на долго (там monkey patching в urllib был, если память не подводит). Если работа связана вот с этим всем, то в какой-то момент от Go начинает неиллюзорно штырить.
Здравствуйте, Kswapd, Вы писали:
S>>C# очень мощный язык и развивается. Берет нужное из разных языков.
K>Звучит устрашающе . В результате нечто переусложнённое и необъятное, угадал? (C# никогда не изучал и знаю про него только то, что он возник как клон Джавы)
мне после свифта сишарп кажется неуклюжим, громоздким и излишним.
Здравствуйте, уважаемый Basil2, Вы писали:
...
B>Rust — потому что он позиционируется как замена С++.
Не уверен что это именно так. Возможно — Вы выдаёте желаемое за действительное
B>То есть я рассчитываю на тот же эффект, что был при изучении C#.
Невозможно дважды войти в одну и ту же реку. (Гераклит, 500 лет до н.э.).
Начнём с того, что более 15 лет назад, когда мы изучали .NET вообще и C# в частности, всё было другое. Да и мы моложе
B>Ну и жалко свой многолетний опыт по С++, а в Rust он вроде бы пригодится. И еще мне кажется, что Rust можно выучить. Про С++ я к сожалению понял, что он уже не умещается в моей голове.
Вы, уважаемый Basil2, в этом не одиноки.
Не только многие разработчтики (в том числе и я), подпишутся под этими словами, но и сам автор C++ многоуважаемый господин Бьёрн Страуструп.
B>Стандарт С++11 внес много хороших плюшек, но после 14 и 17 стало понятно, что вещей к изучению там море.
+100500
Да, после выхода стандарта 2011 года — можно сказать, что новый C++ это другой язык...
И именно это — подогревает интерес к изучению и освоению новых возможностей языка!
B>А я люблю понимать, что знаю язык от и до, но это не про плюсы B>Что скажете?
Изучать именно C++ углубить своё понимание в нём.
По проинцыпу:
Новое — это хорошо забытое старое
P.S. Ни один язык не удасться узучить как Вы пишите "знаю_язык_от_и_до"
Так, например, я думал, что знаю обычный ANSI C от и до.
Что уже более 20 лет (двадцати лет) как его знаю...
Но вот решил я изучить UNIX/Linux — как программист.
Приобрел вот такие книжки:
1) Advanced Programming in the UNIX® Environment, Third Edition: http://www.apuebook.com/apue3e.html
2) The Linux Programming Interface: http://man7.org/tlpi
Там — всё на классическом ANSI C.
Изучая их я понял, что в обычном Си я многого чего не знаю
Здравствуйте, kaa.python, Вы писали:
DM>>https://msrc-blog.microsoft.com/2019/07/22/why-rust-for-safe-systems-programming/
KP>Отличный пример жонглирования фактами. Обычно именно так и выглядят попытки доказать что в C++ с управлением памятью всё плохо до сих пор. А ведь надо совсем чуть-чуть: объединить Си с C++ и навалить сверху проектов возраста говна мамонта, как C++ становиться магическим образом опасным. При этом, если проект изначально C++11 и написан на C++, а не Си-с-классами, то проблем с памятью, почему-то нет.
Ну так большинство реальных проектов относятся к первой группе. Все просто. Говна мамонтов много, а новых проектов на новом С++ очень мало, это вырождающаяся ниша.
K>Относительно малыми усилиями можно быстро создавать богатые функционалом, краткие, читабельные, легко поддерживаемые программы. Что это, если не мощь?
Здравствуйте, rudzuk, Вы писали:
B>> Разумно. Но это мобильная разработка, а мне она очень не понравилась. R>Чем именно, если не секрет?
Не секрет:
1. Неудобно отлаживать.
2. Сложно проверять (разница между Android и iOS; разница в Android'ах).
3. Ненативные языки (если хочется использовать один язык везде)
У меня правда был дерьмовый инструмент (PhoneGap), но проблемы выше в любом случае будут.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
По Go и Rust довольно много вакансий на удаленке от буржуев (джаву и скалу не рассматриваю, мне кажется плюсовику их учить неприятно будет). Го популярнее и проще, чем раст, так что, если выбирать один язык, то это он.
Здравствуйте, Basil2, Вы писали:
B>В молодости случайно купил книжку по Forth и получил огромное удовольствие от его изучения. Необычный, минималистичный, расширяемый — на фоне Pascal и Basic это было очень интересно. Но поработать с ним к сожалению не пришлось.
B>Что скажете?
В молодости случайно купил книжку по Haskell и получил огромное удовольствие от его изучения.
Здравствуйте, Basil2, Вы писали:
B>В молодости случайно купил книжку по Forth и получил огромное удовольствие от его изучения. Необычный, минималистичный, расширяемый — на фоне Pascal и Basic это было очень интересно. Но поработать с ним к сожалению не пришлось.
B>А некоторое время назад на работе решили писать тесты на C#. Начал изучать и также получил огромное удовольствие. Было очень приятно увидеть, как красиво обыграли многие неудачные моменты C++. (Правда, от этой идеи быстро отказались, и так я его и не изучил). https://ziglang.org/
B>Хочу повторить эти ощущения и заодно выучить что-то полезное. Основной язык сейчас C++, также иногда использую Python, JavaScript, LUA. Чтобы такого изучить? Желательно, чтобы это потом пригодилось, а в идеале чтобы еще найти работу удаленно.
Дык у вас уже всё есть, кроме php и perl-а и tcl.
lua уже пользовались посмотрите http://terralang.org/
B>Основные кандидаты сейчас это F# и Rust. F# — потому что название напоминает Forth Ну и это функциональный язык, т.е. несколько другая концепция чем у С++ — как в свое время другая концепция была у Forth. Опять же функции мне кажется должны чем-то напоминать слова у Forth.
для разнообразия VHDL
B>Rust — потому что он позиционируется как замена С++. То есть я рассчитываю на тот же эффект, что был при изучении C#. Ну и жалко свой многолетний опыт по С++, а в Rust он вроде бы пригодится. И еще мне кажется, что Rust можно выучить. Про С++ я к сожалению понял, что он уже не умещается в моей голове. Стандарт С++11 внес много хороших плюшек, но после 14 и 17 стало понятно, что вещей к изучению там море. А я люблю понимать, что знаю язык от и до, но это не про плюсы
B>Что скажете?
D и Rust не взлетит.
Здравствуйте, Basil2, Вы писали:
B>Rust — потому что он позиционируется как замена С++.
Да, хорошая штука. B>Что скажете?
Если прямо изучить что-то новое, то OCaml попробуй. Хаскел более хардкорен, а окамл не особо.
Если хочется реально "повернуть мозг в другом направление", то на мой взгляд для твоего конкретного случая есть всего лишь один реальный вариант (несмотря на то, что тебе тут много чего насоветовали). Просто потому, что с одной стороны хороший C++ программист уже знаком на практике со всеми актуальными парадигмами (приходится использовать и функциональные приёмы и метапрограммирование и много чего ещё, разве что логической ещё нет в языке, но она и не особо актуальна к сожалению), а с другой должен не плохо разбираться в устройстве компьютерного железа. И сочетание данных факторов даёт нам ровно одно пересечение: Verilog! Ну или сразу его обобщение под названием SystemVerilog, хотя можно начать с простого. Это реально совершенно другое программирование и при этом крайне перспективное в наше время. Но оно потребует серьёзных вложений времени в изучение предметной области... Точнее hello world можно написать за пару минут, скачав простейший компилятор и эмулятор. А вот сделать что-то сложное на современном уровне уже так не получится — придётся изучать принятые в данной области приёмы, которые совершенно не такие как в привычном программирование.
P.S. Если честно, то не вижу ничего сложного в современном C++ и с нетерпением ожидаю C++20, в котором будет (это уже точно зафиксировано комитетом) новая большая (намного больше чем в C++14/C++17) гора вкусностей! Однако удовлетворённость основным инструментом разработки (хотя у меня ещё и Питон и ещё десяток мелких языков есть) конечно же совершенно не означает, что не надо изучать новые языки и парадигмы.
Здравствуйте, Kswapd, Вы писали:
S>>C# очень мощный язык и развивается. Берет нужное из разных языков.
K>Звучит устрашающе . В результате нечто переусложнённое и необъятное, угадал? (C# никогда не изучал и знаю про него только то, что он возник как клон Джавы)
Как клон он вышел в 2003. С 2005 года с появлением линка и дженериков он начал очень быстро развиваться. Сейчас приходится программировать на Java под андроид и без слез писать невозможно.
Хотя мне нравятся @Override в конструкторе.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, kaa.python, Вы писали:
KP>Я буду банален, но учить язык толку вообще ноль, особенно если целью выступает расширение возможностей поиска работы. Надо с предметной областью разбираться и из неё уже брать язык.
Категорически не согласен. Примерно половину языков я изучил для хобби, а не для профессионального использования. На работе жизнь не заканчивается.
Здравствуйте, Basil2, Вы писали:
B>Я неудачно выразился. Правильно сказать так: синтаксис Go слишком похож на С, из-за чего он выглядит как С со свистоперделками. Тогда как синтаксис Rust на С не похож, из-за чего выглядит значительно более целостным.
Да 100500 языков похожи синтаксисом на C, это говорит скорее о его изначальном удобстве и большой универсальности.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
As we’ve seen, roughly 70% of the security issues that the MSRC assigns a CVE to are memory safety issues. This means that if that software had been written in Rust, 70% of these security issues would most likely have been eliminated. And we’re not the only company to have reported such findings.
Отличный пример жонглирования фактами. Обычно именно так и выглядят попытки доказать что в C++ с управлением памятью всё плохо до сих пор. А ведь надо совсем чуть-чуть: объединить Си с C++ и навалить сверху проектов возраста говна мамонта, как C++ становиться магическим образом опасным. При этом, если проект изначально C++11 и написан на C++, а не Си-с-классами, то проблем с памятью, почему-то нет. Это я не к тому, что C++ прекрасный и безопасный язык, а к тому, что проблем с памятью в современном C++ (11 и выше) не сильно больше чем в любом другом не-функциональном языке, будь то Java или Go.
Здравствуйте, D. Mon, Вы писали:
DM>Ну так большинство реальных проектов относятся к первой группе. Все просто. Говна мамонтов много, а новых проектов на новом С++ очень мало, это вырождающаяся ниша.
Ну а зачем же ты тогда споришь с тем, что современный C++ дает достаточно инструментов для безопасной работы с памятью? Что бы проект стал безопасным на Rust — его надо на него полностью переписать с нуля. Ну а в случае с C++ достаточно постепенно перевести кодовую базу в соответствие с современными стандартами, что как минимум ощутимо дешевле.
Здравствуйте, Basil2, Вы писали:
B>Познакомился с Rust подробнее. Это именно замена С++. Ну или замена С, но в том же смысле, как С — замена ассемблеру. То есть это язык на уровень выше, чем С и С++ (также как когда-то С оказался на уровень выше ассемблера).
Что бы быть заменой чего-то, крайне желательно либо быть лучше в какой-то конкретной нише (что проделали Java, C#, Go, Python) либо предлагать обратную совместимость при наличии лучших возможностей (C++ как замена Си). А вот в случае в Rust тут сложности. Он не предлагает никакой серебряной пули (ну, пытается со своей защитой памяти, но это работает только с теми, кто нормально C++ не знает и слышал страшилки образца pre-C++11) и при этом не дает обратной совместимости с C++.
B>Никакими оригинальными С там не пахнет. Просто С++ это условно "С с классами", а Rust — это "С с шаблонами и методами". Только далеко уже не С
С шаблонами и интерфейсами трейтами, наверное? Или о чем-то другом речь?
Здравствуйте, Эйнсток Файр, Вы писали:
ЭФ>А так тебе поздно трепыхаться. Если не можешь доучить C++, то и другие технологии уже не осилишь. Это старость.
Не, ну почему же? Мне вот на старости лет пришлось C# изучать и, прости господи, PHP. Не то, чтоб я в восторге, но по работе надо и никуда не деться от этого.
Здравствуйте, jahr, Вы писали:
J>Здравствуйте, Basil2, Вы писали:
J>По Go и Rust довольно много вакансий на удаленке от буржуев (джаву и скалу не рассматриваю, мне кажется плюсовику их учить неприятно будет). Го популярнее и проще, чем раст, так что, если выбирать один язык, то это он.
Здравствуйте, kaa.python, Вы писали:
KP>Надо с предметной областью разбираться и из неё уже брать язык.
Часто вижу этот совет, но он не универсален. Бывает, что увлекаешься каким-то языком и меняешь предметную область. Понятно, что теряешь в уровне профессионализма и в конечном итоге в доходах, но это тоже жизнеспособная стратегия.
Здравствуйте, Basil2, Вы писали:
B>В молодости случайно купил книжку по Forth и получил огромное удовольствие от его изучения. Необычный, минималистичный, расширяемый — на фоне Pascal и Basic это было очень интересно. Но поработать с ним к сожалению не пришлось. B>Хочу повторить эти ощущения и заодно выучить что-то полезное.
Дождаться pattern-matching в Go — и можно пробывать
Я получил большое удовольствие от изучения Rust. Планирую продолжить, порешать всякие алгоритмические задачки на нём. Очень необычный язык. Кстати считаю, что мой скилл в С++ тоже вырос от освоения модели ownership в Rust. Оно как-то подсознательно понималось, конечно, но когда увидел как оно работает формализованно, это мне помогло.
Правда на практике ни Rust ни C++ не применяю и вряд ли применю, я на Java пишу. Вряд ли человек с таким бэкграундом даже удалённую работу сможет найти, поэтому рассматриваю это всё исключительно для удовольствия и разминки мозгов.
S>C# очень мощный язык и развивается. Берет нужное из разных языков.
Звучит устрашающе . В результате нечто переусложнённое и необъятное, угадал? (C# никогда не изучал и знаю про него только то, что он возник как клон Джавы)
Z>мне после свифта сишарп кажется неуклюжим, громоздким и излишним.
C# не юзал, но знаю, что прикладная библиотека .NET там могучая. Как некий полностью переосмысленный MFC. Теперь это выглядит не как ОО-надстройка над WinAPI, а полностью осмысленная полезная функциональность, с дружественным для разработчика интерфейсом.
.NET, правда, можно и из C++ юзать, хоть и через одно место.
Здравствуйте, HrorH, Вы писали:
HH> B>В молодости случайно купил книжку по Forth и получил огромное удовольствие от его изучения. Необычный, минималистичный, расширяемый — на фоне Pascal и Basic это было очень интересно. Но поработать с ним к сожалению не пришлось. HH> B>Что скажете? HH> В молодости случайно купил книжку по Haskell и получил огромное удовольствие от его изучения.
А вот я покупал в юности более другие книги для получения удовльствия ... )))
Здравствуйте, kaa.python, Вы писали:
KP>Rust не позицируется как замена C++, максимум замена C.
Я бы сказал что Rust это как будто из С снова делают С++, только с учетом опыта делания С++.
KP>Кроме того, если C++ в голове не помещается, то Rust и подавно не влезет, там своих заморочек вагон и они не менее заковыристые. Возьми что-то попроще, тот же Go, я его вообще всем последнее время советую
Я думал о Go, но что-то он совсем не глянулся. С одной стороны странноватый синтаксис, с другой — все тоже самое как в С++. В Расте все же виден некий стержень, вокруг которого все делается.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, Kswapd, Вы писали:
K>Мне это удалось с Go. Минималистичный, лаконичный, выразительный, мощный. И избавлен от детских болезней C и C++, что особенно восхитило. Очарованный Go, я бросил довольно прибыльную удалёнку на C++ и устроился на вдвое меньшие деньги в офисе)), но нисколько не жалею.
Я думал о Go, но что-то он совсем не глянулся. С одной стороны странноватый синтаксис, с другой — все тоже самое как в С++. В Расте все же виден некий стержень, вокруг которого все делается.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, bexab, Вы писали:
B>Дождаться pattern-matching в Go — и можно пробывать
Именно его отсутствие меня в Go и смутило. Столько разговоров что крутой выразительный язык, а как ткнулся в switch — так обычные плюсы, ничего особенного...
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
B>Я думал о Go, но что-то он совсем не глянулся. С одной стороны странноватый синтаксис, с другой — все тоже самое как в С++.
Ну как же. Go — отрицание C++ . C++ пропитан магией (один принцип SFINAE чего стоит) — в Go всё (ну, почти всё)) явно и без сюрпризов. В C++ ручное управление памятью — в Go сборщик мусора. В C++ наследование — в Go композиция. В C++ исключения — в Go принцип "ошибка есть значение".
А что имеется в виду под паттерн-матчингом? Как в Хаскеле, множественное определение функции? Go откровенно императивный язык, ему такое не идёт.
Здравствуйте, Kswapd, Вы писали:
B>>Я думал о Go, но что-то он совсем не глянулся. С одной стороны странноватый синтаксис, с другой — все тоже самое как в С++.
K>Ну как же. Go — отрицание C++ .
Я неудачно выразился. Правильно сказать так: синтаксис Go слишком похож на С, из-за чего он выглядит как С со свистоперделками. Тогда как синтаксис Rust на С не похож, из-за чего выглядит значительно более целостным.
K>А что имеется в виду под паттерн-матчингом? Как в Хаскеле, множественное определение функции? Go откровенно императивный язык, ему такое не идёт.
Оператор match (как замена switch).
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, _ilya_, Вы писали:
B>>Хочу повторить эти ощущения и заодно выучить что-то полезное.[/b] __>Не думаю что машинный код / ассемблер будет хорошим уроком. Если было не понятно, что все языки +- одно и тоже.
У меня 15 лет опыта С++. Странно было бы при этом не знать ассемблер.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, kaa.python, Вы писали:
KP>В Расте народ борется с ветряными мельницами, по большому счету, вот и весь стержень. Управление памятью в C++ уже много лет как не проблема вот прям совсем, но по старой памяти многие используют эту страшилку до сих пор.
As we’ve seen, roughly 70% of the security issues that the MSRC assigns a CVE to are memory safety issues. This means that if that software had been written in Rust, 70% of these security issues would most likely have been eliminated. And we’re not the only company to have reported such findings.
Здравствуйте, Basil2, Вы писали:
B>Желательно, чтобы это потом пригодилось, а в идеале чтобы еще найти работу удаленно. B>Основные кандидаты сейчас это F# и Rust.
Здравствуйте, D. Mon, Вы писали:
DM>Здравствуйте, Basil2, Вы писали:
B>>Желательно, чтобы это потом пригодилось, а в идеале чтобы еще найти работу удаленно. B>>Основные кандидаты сейчас это F# и Rust.
А зачем, собственно говоря, учить то, что знает каждая собака? Входить на рынок надо когда спрос только зарождается.
Здравствуйте, Poopy Joe, Вы писали:
PJ>А зачем, собственно говоря, учить то, что знает каждая собака? Входить на рынок надо когда спрос только зарождается.
Есть 9 ларьков с хот-догами. Поставишь рядом десятый — получишь стабильную прибыль. Начнёшь торговать шаурмой — разоришься. Не?
Здравствуйте, bnk, Вы писали:
bnk>Здравствуйте, Poopy Joe, Вы писали:
PJ>>А зачем, собственно говоря, учить то, что знает каждая собака? Входить на рынок надо когда спрос только зарождается.
bnk>Есть 9 ларьков с хот-догами. Поставишь рядом десятый — получишь стабильную прибыль. Начнёшь торговать шаурмой — разоришься. Не?
Не факт, что стабильную и уж точно небольшую, скорее всего у соседей уже есть лояльные клиенты и больше опыта. А на шаурме можно и подняться. Но можно и разорится, да. Это вопрос оценки, что открывать. Шаурму или молочный ларек.
Здравствуйте, D. Mon, Вы писали:
DM>Ну так большинство реальных проектов относятся к первой группе. Все просто. Говна мамонтов много, а новых проектов на новом С++ очень мало, это вырождающаяся ниша.
Где-то дорабатываю старые проекты, чтобы вывести их из состояния "г/м", где-то разрабатывают новые.
Ну а кое-где жалостливо всхлипывают:
-Ну C++ это же вырождающаяся ниша Жалко программистов, оставшихся в ней и т.д. и т.п.
P.S. Я не спорю, что разработка нового пректа — в разы интереснее, нежели копание в старом "г/м", но тем не менее, факт наличия старых (нуждающихся в рефакторинге) проектов —
также способствует появлению новых рабочих мест!
AG>P.S. Я не спорю, что разработка нового пректа — в разы интереснее, нежели копание в старом "г/м", но тем не менее, факт наличия старых (нуждающихся в рефакторинге) проектов — AG>также способствует появлению новых рабочих мест!
Консультанты на COBOLе сейчас одни из самых высокооплачиваемых разработчиков
Здравствуйте, kaa.python, Вы писали:
KP>Здравствуйте, Basil2, Вы писали:
B>>Я бы сказал что Rust это как будто из С снова делают С++, только с учетом опыта делания С++. B>>Я думал о Go, но что-то он совсем не глянулся. С одной стороны странноватый синтаксис, с другой — все тоже самое как в С++. В Расте все же виден некий стержень, вокруг которого все делается.
KP>В Расте народ борется с ветряными мельницами, по большому счету, вот и весь стержень. Управление памятью в C++ уже много лет как не проблема вот прям совсем, но по старой памяти многие используют эту страшилку до сих пор.
Насчет управления памятью в С++ полностью согласен, сам не вижу там проблемы. Раст я так понял своей моделью памяти больше решает проблемы многопоточности, нежели утечек (с которыми давно научились бороться). Ну и под стержнем я скорее синтаксис имел в виду. Он там менялся несколько раз по ходу дела, что отвадило от языка часть народа, но зато его в достаточной мере вылизали, имхо.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, D. Mon, Вы писали:
KP>> с тем, что современный C++ дает достаточно инструментов для безопасной работы с памятью?
DM>Он также содержит все несовременные и небезопасные способы тоже, это минное поле и lipstick on a pig. Простой
arr[idx] = 1;
легко рушит всю безопасность, т.к. границы массива не проверяются.
Это как раз совсем не проблема — в дебаге это обычно проверяется. Да и дебажная версия STL тоже много чего чекает. Проблемой является переезд памяти, когда один объект подсирает другому объекту. И если это например попадает на счетчик ссылок, кто-то подвисает в памяти и понеслось...
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, Basil2, Вы писали:
DM>> т.к. границы массива не проверяются.
B>Это как раз совсем не проблема — в дебаге это обычно проверяется.
В дебаг версии-то проверяется для векторов, но в продакшн-то идет релиз версия, где никакой гарантии нет, а есть лишь надежда, что тестами мы достаточно хорошо все случаи покрыли и у себя проверили, и надежда эта весьма наивна.
B> Проблемой является переезд памяти, когда один объект подсирает другому объекту. И если это например попадает на счетчик ссылок, кто-то подвисает в памяти и понеслось...
Это да. В частности, любовь С++ передавать объекты по значению, и разрешение для них наследования, это прямая дорога к тому, чтобы или стек рядом запороть, или объект неполный сформировать... Другие языки тут сделали выводы, но С++ было уже поздно.
Здравствуйте, AlexGin, Вы писали:
AG>Начнём с того, что более 15 лет назад, когда мы изучали .NET вообще и C# в частности, всё было другое. Да и мы моложе
Но я то лет 5 всего назад изучал
B>>Стандарт С++11 внес много хороших плюшек, но после 14 и 17 стало понятно, что вещей к изучению там море. AG>+100500 AG>Да, после выхода стандарта 2011 года — можно сказать, что новый C++ это другой язык...
А я бы так не сказал. Имхо там нет ни одной фичи, которая бы сделала его другим языком. Auto? For loop? Initialization lists? Lambdas? Smart pointers? Threads? Все это было так или иначе в Boost. Только move-семантика достаточно прорывная штука, но только ухудшает пользование языком, причем значительно.
AG>P.S. Ни один язык не удасться узучить как Вы пишите "знаю_язык_от_и_до"
На 100% да, но можно прилично таки приблизиться. Например, если это LUA.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, wamaco, Вы писали:
W>стань гуру Delphi! W>всем назло!
Я начинал с Pascal, так что Delphi меня в свое время восхитил. Правда, несложно восхититься, когда на закате MS-DOS ты за пару часов делаешь программу с графическим GUI.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, Basil2, Вы писали:
AG>>Да, после выхода стандарта 2011 года — можно сказать, что новый C++ это другой язык...
B>А я бы так не сказал. Имхо там нет ни одной фичи, которая бы сделала его другим языком.
Не утверждаю, что принцыпиально новым, но всё-таки другим
Вот насчет новых фич: https://habr.com/ru/post/182920
B>Auto? For loop? Initialization lists? Lambdas? Smart pointers? Threads? Все это было так или иначе в Boost. Только move-семантика достаточно прорывная штука, но только ухудшает пользование языком, причем значительно.
Да та же самая auto — написал четыре буквы, а реальный тип за тебя компилятор подставил
И чтобы прописать этот реальный тип — зачастую приходилось ешё немало поискать его.
Насчёт smart pointers — также отличная штука (да и boost не надо за собой тащить).
Когда начинаешь усиленно пользоваться возможностями Modern С++, уже не хочется работать в стиле C++03/C++99
AG>>P.S. Ни один язык не удасться узучить как Вы пишите "знаю_язык_от_и_до"
B>На 100% да, но можно прилично таки приблизиться. Например, если это LUA.
+100500
Скажем так: любой язык можно прилично изучить, так чтобы владеть основными возможностями в рамках практического использования.
Здравствуйте, AlexGin, Вы писали:
AG>Не утверждаю, что принцыпиально новым, но всё-таки другим AG>Вот насчет новых фич: AG>https://habr.com/ru/post/182920
Так я большую половину и перечислил. Nullptr и свободные begin/end это и не фичи можно сказать.
AG>Да та же самая auto — написал четыре буквы, а реальный тип за тебя компилятор подставил
И ей тут же начали злоупотреблять, пихая куда ни попадя. Меня например просто бесит код с множественными авто. Вроде бы все знают, что "код чаще читается, чем пишется", но увы. Вместо того, чтобы потратить пару секунд и написать тип, потом остальные каждый раз тратят эту пару секунд чтобы мысленно(!) сделать работу компилятора!
AG>И чтобы прописать этот реальный тип — зачастую приходилось ешё немало поискать его.
Мне всегда хватало нажать F12.
AG>Насчёт smart pointers — также отличная штука (да и boost не надо за собой тащить).
Они были уже в std::tr1. Ну и в самих плюсах был auto_ptr, хотя он конечно был кривоват. И таки да, нормальный указатель появился только в C++11, даже в бусте его полностью не было.
AG>Когда начинаешь усиленно пользоваться возможностями Modern С++, уже не хочется работать в стиле C++03/C++99
Это правда. Из относительно концептуальных фич можно назвать constexpr. Она действительно привносит в язык новые необычные возможности.
AG>Скажем так: любой язык можно прилично изучить, так чтобы владеть основными возможностями в рамках практического использования.
Это да, но мне очень нравится ощущения "я знаю про это практически всё". С текущим С++ его увы не получить.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, Kswapd, Вы писали:
K>Относительно малыми усилиями можно быстро создавать богатые функционалом, краткие, читабельные, легко поддерживаемые программы.
На питоне нельзя? K>Что это, если не мощь?
Ну... хз. На С++ тоже можно. Мне казалось мощь языка раскрывается через его выразительность и тулинг. С первым у Го есть проблемы, со вторый вроде не всё плохо.
Относительно большими усилиями . Конечно, это всего лишь моё субъективное мнение. Тем не менее, появляются отзывы людей, чьи команды начали использовать Go вместо другого языка, к чему это привело.
Здравствуйте, Mamut, Вы писали:
K>>Относительно малыми усилиями можно быстро создавать богатые функционалом, краткие, читабельные, легко поддерживаемые программы. Что это, если не мощь?
Вот и я про это!
После прочтения всех сообщений, кандидатами стали 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#.
Плюс можно посмотреть какие-нибудь ОКамлы и Эрланги. Нцать лет назад я в итоге пробежался по пяти или шести языкам. Проблема со многими ФП в том, что у многих мало практичности и много плясок вприсядку на ровном месте.
Но подход «пощупать там, пощупать здесь» вполне работает.
Здравствуйте, 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>Лучше всего писать код на этих языках, но я пока остановился на приобретении книг. Если честно, просто не хватает времени вплотную заняться изучением.