S>Вот, кстати, что на счет Go? S>Из коробки компилится под множество платформ. Какие минусы в сравнении с тем же C++?
Хреновая поддержка динамических библиотек. Ее фактически нет.
Ну и наличие GC как бы намекает, что это совершенно другая ниша. Впрочем, имеющая пересечения с исторической нишей С/С++ в плане написания командлайновых полезняшек.
Как много веселых ребят, и все делают велосипед...
Здравствуйте, Shmj, Вы писали:
S>Из коробки компилится под множество платформ. Какие минусы в сравнении с тем же C++?
Укуренная система типов. Слабые средства метапрограммирования, отсутствие статического полиморфизма. Набор библиотек слабоват.
Парадигма обработки ошибок приводит к бойлерплейту. В целом, средства абстракции слабоваты, например итераторов — нет, и никак не сделать.
Моё резюме: берите го, если вам позарез нужны горутины. В остальных случаях не рекомендую. Да и в том же C++ тоже есть корутины, только с более мудрёным синтаксисом, явной передачей контекста и т. д., короче в го корутины реально удобнее.
Здравствуйте, Shmj, Вы писали:
S>Вот, кстати, что на счет Go?
Го выбирают из-за:
1) поддержки очень крупной компанией,
2) поддержки очень крупной компанией,
3) поддержки очень крупной компанией,
4) киллер-фич и комьюнити
Первые три пункта перечёркивают его любые слабые стороны
Здравствуйте, Hobbes, Вы писали:
H>Моё резюме: берите го, если вам позарез нужны горутины. В остальных случаях не рекомендую. Да и в том же C++ тоже есть корутины, только с более мудрёным синтаксисом, явной передачей контекста и т. д., короче в го корутины реально удобнее.
Ну, на самом деле, Go как раз позиционируется именно как язык, в котором нет и никогда не будет всех этих крутых и совершенно непостижимых фич, которыми столь славен C++.
Здравствуйте, ononim, Вы писали:
S>>Вот, кстати, что на счет Go? S>>Из коробки компилится под множество платформ. Какие минусы в сравнении с тем же C++? O>Хреновая поддержка динамических библиотек. Ее фактически нет.
Ее нет в том смысле, что невозможно написать динамическую библиотеку на Go. Но динамические библиотеки, написанные на других языках, с сишными соглашениями о вызовах, из Go без проблем можно использовать.
S>>>Вот, кстати, что на счет Go? S>>>Из коробки компилится под множество платформ. Какие минусы в сравнении с тем же C++? O>>Хреновая поддержка динамических библиотек. Ее фактически нет. Pzz>Ее нет в том смысле, что невозможно написать динамическую библиотеку на Go. Но динамические библиотеки, написанные на других языках, с сишными соглашениями о вызовах, из Go без проблем можно использовать.
Да даже написать вроде можно, но толку с нее мало — она не может взаимодействовать с другими библиотеками как го-шная библиотеке.
В плюсах нет никаких проблем дергать другие библиотеки написанные на плюсах за классы. Надо только проявлять некоторую осторожность, но для плюсовика — осторожность — норма жизни Неосторожные плюсовики, как неосторожные саперы — рано выбывают из профессии.
Как много веселых ребят, и все делают велосипед...
S>>Из коробки компилится под множество платформ. Какие минусы в сравнении с тем же C++? Pzz>Ну, фраза "я программист на C++" заставляет девок покраснеть и дышать чаще, а то же самое про Go заставляет их лишь пожать плечами.
Девок QAщиц?
Как много веселых ребят, и все делают велосипед...
Pzz>Ну, фраза "я программист на C++" заставляет девок покраснеть и дышать чаще, а то же самое про Go заставляет их лишь пожать плечами.
Учитывая текущую востребованность гошников в РФ, большие чем у плюсовиков зрплт (смотрим на вакансии), и меньший средний возраст гошников (все хипстеры из маилрушки и яндекса), то скорее всё совсем наоборот.
o>> Хреновая поддержка динамических библиотек. Ее фактически нет. AB>А зачем? Для ниши go монобинарь удобнее (в деплое и поддержке).
см изначальный вопрос
Как много веселых ребят, и все делают велосипед...
Здравствуйте, ononim, Вы писали:
Pzz>>Ее нет в том смысле, что невозможно написать динамическую библиотеку на Go. Но динамические библиотеки, написанные на других языках, с сишными соглашениями о вызовах, из Go без проблем можно использовать. O>Да даже написать вроде можно, но толку с нее мало — она не может взаимодействовать с другими библиотеками как го-шная библиотеке. O>В плюсах нет никаких проблем дергать другие библиотеки написанные на плюсах за классы. Надо только проявлять некоторую осторожность, но для плюсовика — осторожность — норма жизни Неосторожные плюсовики, как неосторожные саперы — рано выбывают из профессии.
Хуже, что в Go два рантайма не могут ужиться в одном процессе. Технически-то динамическую библиотеку сделать можно. А потом начинается: загрузили ее из программы на C/C++, все хорошо. Загрузили две таких разных библиотеки, поперли странные глюки, причем разные на разных системах. Загрузили из программы на Go библиотеку на Go, опять беда.
Выселить рантайм в отдельную динамическую библиотеку тоже не получится, потому, что все модули, написанные на Go, должны быть скомпилированы одной и той же версией компилятора, и рантайм должен быть от него. Иначе никто ничего не гарантирует.
Ну и что до осторожности, местами видно, что Go делали не какие-то питонисты в пиджаке галстуке, а кондовые хакеры-чернокнижники с длинными немытыми волосами и в вонючем свитере (Пайк на вид не такой, но он притворяется). И если делать на Go сложные вещи, а иногда и простые, то можно нарваться.
Здравствуйте, vsb, Вы писали:
vsb>Лично для меня у Go самая фатальная проблема это система обработки ошибок. Я считаю, что исключения в сто раз лучше, чем то, что сделали в Go.
В то же время подход с явной обработкой не выходит боком фактически никогда, в отличие от исключений, который крайне легко забыть, или не верно обработать.
Здравствуйте, smeeld, Вы писали:
Pzz>>Ну, фраза "я программист на C++" заставляет девок покраснеть и дышать чаще, а то же самое про Go заставляет их лишь пожать плечами.
S>Учитывая текущую востребованность гошников в РФ, большие чем у плюсовиков зрплт (смотрим на вакансии), и меньший средний возраст гошников (все хипстеры из маилрушки и яндекса), то скорее всё совсем наоборот.
Пайк задумывал Go как C 2.0. Как язык для настоящих мужчин, но без недостатков C, и с достоинствами Алефа и Лимбо и с современным синтаксическим стилем, без всех этих ненужных скобочек после if'а. Но все мы знаем, что программировать на Go побежали в основном не небритые сишники, а молодые и прыщавые программисты на Питоне, не способные освоить даже JavaScript.
Здравствуйте, ononim, Вы писали:
S>>>Из коробки компилится под множество платформ. Какие минусы в сравнении с тем же C++? Pzz>>Ну, фраза "я программист на C++" заставляет девок покраснеть и дышать чаще, а то же самое про Go заставляет их лишь пожать плечами. O>Девок QAщиц?
Да есть ли разница? Или ты программировать с ними собрался?
Здравствуйте, vsb, Вы писали:
vsb>Лично для меня у Go самая фатальная проблема это система обработки ошибок. Я считаю, что исключения в сто раз лучше, чем то, что сделали в Go.
Подход, принятый в Go, превращает обработку ошибок из сложной вещи в трудную вещь. На мой взгляд, это — достоинство.
S>>>>Из коробки компилится под множество платформ. Какие минусы в сравнении с тем же C++? Pzz>>>Ну, фраза "я программист на C++" заставляет девок покраснеть и дышать чаще, а то же самое про Go заставляет их лишь пожать плечами. O>>Девок QAщиц? Pzz>Да есть ли разница? Или ты программировать с ними собрался?
Девка QAщица, узнав что ты С++сник — может внезапно достать изза пазухи десятидюймовый pentesting tool.
Как много веселых ребят, и все делают велосипед...
Здравствуйте, kaa.python, Вы писали:
vsb>>Лично для меня у Go самая фатальная проблема это система обработки ошибок. Я считаю, что исключения в сто раз лучше, чем то, что сделали в Go.
KP>В то же время подход с явной обработкой не выходит боком фактически никогда
Подход с явной обработкой выходит боком практически всегда. Ошибку либо тупо прокидывают вверх, теряя стектрейс, либо игнорируют, либо пытаются обрабатывать на месте (очень часто с багами, т.к. этот сценарий никогда не тестируют).
> в отличие от исключений, который крайне легко забыть, или не верно обработать.
Никогда у меня не было проблем с исключениями. Если про исключение забыл, значит сценарий не отрабатывает, в логах появляются страшные сообщения, идёшь и фиксишь код, никаких последствий. А чаще всего всё просто работает как ожидается — исключение вылетает наверх, где-нибудь там сверху ловится и всё.