1.1, Аноним (-), 09:47, 16/08/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Например можно уже его использовать как язык общего назначения? Библиотечки всякие разные, например конекторы к базам понаросли?
| |
|
2.2, Аноним (-), 09:51, 16/08/2016 [^] [^^] [^^^] [ответить]
| +2 +/– |
Конечно, пишу на нем 2 года, помимо коннекторов к базе в нем key/value базы появились
| |
|
3.81, Аноним (-), 19:52, 16/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
Ответил сам себе и отмодерировал последующую дискуссию, вот тебе и opennet, вот тебе и аноним
| |
|
2.5, Аноним (5), 10:02, 16/08/2016 [^] [^^] [^^^] [ответить]
| –3 +/– |
Как будто не разработчики пишут библиотеки, а они сами "наростают", смахивает на теорию эволюции.
| |
|
3.12, тоже Аноним (ok), 11:00, 16/08/2016 [^] [^^] [^^^] [ответить]
| +4 +/– |
Так и есть, эволюция. Разработчики пишут, кто-то использует. Удачно написанное и многими используемое становится стандартом де-факто, который реально можно использовать в рабочих проектах.
Возможна ситуация, когда используемая библиотека вымирает в процессе такой эволюции. Так что пишущие всерьез и обеспечивающие поддержку гонятся не столько за новшествами, сколько за уверенностью, что оно не будет заброшено и забыто через пару лет.
Ибо переписывать уже запущенный проект в погоне за прогрессом - это очень нехорошо...
| |
|
|
|
|
|
|
5.30, Аноним (-), 13:53, 16/08/2016 [^] [^^] [^^^] [ответить]
| –2 +/– |
А у меня в спектрум флешка с линухом не вставляется, поэтому мне без разницы.
| |
|
|
|
2.62, _ (??), 17:44, 16/08/2016 [^] [^^] [^^^] [ответить]
| +2 +/– |
>лучше бы под солярис нормальный порт сделали
Соляра - как бы проприетарный продукт, это - раз.
Популярность которого - ниже плинтуса и стремительно сворачивается в вообще ничто - это два.
Так кому оно надо - гуглу или оракелу?! Оракель не чешется ... вывод? :(
БСД к примеру стараются, у них там 3 косяка неприятных, но проблема озвучена - народ роет ...
А в соляре всё хорошо - всем пофиг :( А ведь было время ... а да чего там! Как солнце закатилось - всем всё понятно было :(
PS: Вот голубым тоже надо, дык они тоже и тормошили и контрибутили - результат смотри в новости :)
| |
|
1.8, anonimous (?), 10:16, 16/08/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Полноценных биндингов к Qt или GTK так и не появилось?
inb4, все эти проекты с подписью experimental и is not recommended for any real use не предлагать.
| |
|
2.13, Comdiv (ok), 11:30, 16/08/2016 [^] [^^] [^^^] [ответить]
| +4 +/– |
Так это от официальных выпусков никак и не зависит.
Если привязки этих библиотек до сих пор не появились, значит они не особо нужны нынешним разработчикам на Go
| |
2.17, qwe (??), 11:57, 16/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
Пишешь сам через cgo. Надежнее, да дольше, зато ничего лишнего не потянешь.
| |
2.23, Аноним (-), 13:19, 16/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
> Полноценных биндингов к Qt или GTK так и не появилось?
Так вебинтырьфейсы ж в моде теперь, а все остальное устаревшее и окаменевшее ненужно из древнючей эпохи.
| |
|
3.24, robux (ok), 13:26, 16/08/2016 [^] [^^] [^^^] [ответить]
| –3 +/– |
> Так вебинтырьфейсы ж в моде теперь
Ну дык. Хозяева не зря растили веб-стадо, у которого клиент-серверная архитектура в мозгу жёстко прошита. А если десктоп-либы развивать, глядишь ещё и peer-to-peer приложения начнут писать и хозяева не смогут контролировать стадо.
Поэтому вебня головного мозга во все поля!
| |
|
4.35, angra (ok), 14:21, 16/08/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
Я тебе сейчас страшную вещь скажу, peer-to-peer можно написать даже на js в браузере.
| |
|
|
|
|
2.68, _ (??), 17:57, 16/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
>Дженерики так и не завезли.
... и "Слава Аллаху!!!!"
Впрочем версия 1.7 ... что там в 2.* и далее будет - посмотрим.
| |
|
3.91, dfsfsfsfsfsf (?), 22:21, 16/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
Рили? И как мне отличить Array<Int> от Array<String> без дженериков то? А как компайлер узнает что в эту функцию нужно передать Array<Int> и выдаст мне ошибку компиляции при попытке передать в нее Array<String>?
На данный момент в Go для такой наипростейшей задачи приходится городить костыли времен Java 4. Действительно дженерики в Go не нужны, только вместе с самим Go с на пару.
| |
|
4.109, Аноним (-), 11:59, 17/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
> как мне отличить Array<Int> от Array<String>
элементарно. у первой тип []int, у второй []string.
| |
|
5.122, Пингвино (ok), 23:41, 17/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
Бросьте, это очередной нытик, который пытается писать на языке со статической типизацией как не петоне.
| |
|
|
|
|
1.15, Comdiv (ok), 11:49, 16/08/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
> с такими достоинствами скриптовых языков, как ... защищённость от ошибок
Вот это - неправда, скриптовые языки плохо защищают от ошибок в целом. Может имелось ввиду от пределённого класса ошибок?
| |
|
2.28, путукфд (?), 13:45, 16/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
> Может имелось ввиду от пределённого класса ошибок?
Сборщик мусора же. Позволяет уменьшить утечки памяти.
| |
|
3.92, Comdiv (ok), 22:23, 16/08/2016 [^] [^^] [^^^] [ответить]
| –2 +/– |
Только скриптовые языки тут ни при чём. Сборка мусора есть где угодно, даже для C.
| |
|
|
|
|
7.133, . (?), 05:48, 19/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
Да я понял кто ты, ну не расстраивайся - ты держись там! :)
| |
|
|
|
|
|
2.47, Пользователь Debian (?), 15:03, 16/08/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
>> с такими достоинствами скриптовых языков, как ... защищённость от ошибок
> Вот это - неправда, скриптовые языки плохо защищают от ошибок в целом.
> Может имелось ввиду от пределённого класса ошибок?
Имелось в виду, что он заставляет программиста рассматривать ошибки как значения, а не просто хреначить отовсюду исключения и надеяться на лучшее.
"Why should I have written ZeroMQ in C": http://250bpm.com/blog:4
"Errors are values": https://blog.golang.org/errors-are-values
Исключения там тоже есть, но они используются для исключительных ситуаций, а не для компенсации отсутствия стратегии обработки ошибок и отсутствия множественных возвращаемых значений (привет C++, C# и Java).
| |
|
3.53, Аноним (-), 16:59, 16/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
> отсутствия множественных возвращаемых значений
Ты реально думаешь что в C++ нельзя вернуть структуру?
| |
|
4.55, Пользователь Debian (?), 17:09, 16/08/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
>> отсутствия множественных возвращаемых значений
> Ты реально думаешь что в C++ нельзя вернуть структуру?
Ты реально думаешь, что из батона нельзя сделать троллейбус?
| |
|
|
6.66, Андрей (??), 17:53, 16/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
Так не в том проблема. Это возможно, но ведь никто не использует эту прекрасную возможность!
| |
|
7.77, rob pike (?), 19:27, 16/08/2016 [^] [^^] [^^^] [ответить]
| –2 +/– |
Вы полагаете что у языка Go есть особая уличная магия, которой по странному стечению обстоятельств лишены все остальные языки, не позволяющая программисту на Фортране написать на нём программу на Фортране?
| |
|
8.85, Андрей (??), 20:28, 16/08/2016 [^] [^^] [^^^] [ответить] | +/– | Я полагаю, что хорошими возможностями языка Go программисты пользуются, а С - ... текст свёрнут, показать | |
|
|
6.70, Пользователь Debian (?), 18:18, 16/08/2016 [^] [^^] [^^^] [ответить]
| +2 +/– |
Это initializer list из C++?
Покажите, пожалуйста, как выглядит деконструкция такого значения, которое вернули из функции, в точке его использования.
Другими словами, если
return {20, std::string("baz"), 1.2f};
возвращается из фанкции foo(), то я бы хотел увидеть LHS в выражении
whatever = foo()
Я могу там написать
int n;
std::string s;
float f;
n, s, f = foo()
?
| |
|
7.72, Victor (??), 18:45, 16/08/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
>[оверквотинг удален]
> Другими словами, если
> return {20, std::string("baz"), 1.2f};
> возвращается из фанкции foo(), то я бы хотел увидеть LHS в выражении
> whatever = foo()
> Я могу там написать
> int n;
> std::string s;
> float f;
> n, s, f = foo()
> ?
Можно так:
std::tuple<int, std::string, float> foo();
int n;
std::string s;
float foo;
std::tie(n, s, f) = foo();
Начиная с C++17 можно будет писать проще:
auto [n, s, f] = foo();
| |
7.76, rob pike (?), 19:25, 16/08/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
n, s и f придётся взять в скобочки, как в Perl (только неудобней, придется добавить auto).
Можно и std::tie(retval, err) = foo(), особенно - err всё равно переиспользуется постоянно, да и retval обычно какой-нибудь size_t везде один и тот же.
| |
|
|
|
4.102, angra (ok), 09:26, 17/08/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Ты реально думаешь что в C++ нельзя вернуть структуру?
Можно, но это не то же самое, что вернуть несколько значений. Более того, использование подобного для возврата ошибки не является общепринятой практикой в С++. Между "возможно" и "удобно" есть достаточно большая разница, чтобы существовало множество ЯП, а не один единственный.
| |
4.108, freehck (ok), 11:49, 17/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
>> отсутствия множественных возвращаемых значений
> Ты реально думаешь что в C++ нельзя вернуть структуру?
Да не в этом дело. На самом деле оно вот в чём:
> Let's say that need f is called by g. g needs several values from f.
> Without multiple value return, f packs the values in a list (or vector),
> which is passed to g. g then immediately unpacks the list.
>
> With multple values, the values are just pushed on the stack. Thus no
> packing and unpacking is done.
>
> Whether this should be called an optimization hack or not, is up to you. | |
4.115, Аноним (-), 17:30, 17/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
>> отсутствия множественных возвращаемых значений
> Ты реально думаешь что в C++ нельзя вернуть структуру?
Какие-то гарантии, что это в штатном порядке сначала задействует регистры, а только потом костыли с копированием в память?
| |
|
3.58, rob pike (?), 17:35, 16/08/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
О разных механизмах обработки ошибок, их преимуществах и недостатках, можно дискутировать бесконечно.
Для Go максимально "лобовой" (если не сказать "лоботомический") способ выбран верно, если учитывать его область применения - интерны и несложный код типа "бери из сокета, кидай в сокет".
Главный минус обработки ошибок в виде проверки дополнительных возвращаемых значений в том что он крайне загромождает код и засоряет основную логику этой своей лапшой ифов, равномерно размазанной повсюду. В случае отсутствия каких-либо механизмов создания абстракций, заботливо не внесенных авторами в язык, написание более-менее сложной логики становится в любом случае делом невозможным, а простейшую засорять не страшно.
| |
|
|
|
6.103, angra (ok), 09:32, 17/08/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
> с поправкой на неудобную запись вида a.set(foo(add(b, c))).
> defer - хорошо, но это если код запаникует. А на ошибки придётся
> таки закрывать его явно?
Ты явно не знаешь Go, так зачем же ты лезешь в это обсуждение?
| |
|
7.110, freehck (ok), 12:04, 17/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
> Ты явно не знаешь Go, так зачем же ты лезешь в это обсуждение?
Берём томик Толстого. Находим во всём повествовании одну крайне сомнительную строчку. "Толстой явно не знал жизни, зачем же он написал такой толмуд"?
| |
|
|
|
|
3.93, Comdiv (ok), 22:27, 16/08/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
> имелось в виду, что он заставляет программиста рассматривать
> ошибки как значения, а не просто хреначить отовсюду исключения
Во-первых, исключения в Go есть, но называются по другому. Во-вторых эта особенность не имеет отношение к скриптовости.
| |
|
|
1.18, Кирилл72 (?), 12:28, 16/08/2016 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
C vendor так и не разобрался, кто-нибудь подскажет?
Есть проект:
$GOPATH/main.go
Который импортирует "github.com/.../package" (который в свою очередь имеет свои зависимости).
С гитхаба сливаю этот пакет в vendor - ошибка компиляции. Причем пробовал по-всякому размещать в vendor - с полными путями, относительными, укороченными: все равно не видит. Пробовал на 1.6
| |
|
|
|
4.46, Пользователь Debian (?), 14:59, 16/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
> Эта фича включена по умолчания с 1.6
...а работала с 1.5 при наличии GO15VENDOREXPERIMENT=1 в переменных окружении.
| |
|
|
2.40, angra (ok), 14:40, 16/08/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Есть проект:
> $GOPATH/main.go
Так делать не надо. Заработает только для простейших проектов и быстро приведет к проблемам.
Любой проект должен быть в отдельной папке в $GOPATH/src/. Например $GOPATH/src/myproject/main.go или $GOPATH/src/github.com/username/projectname/main.go. А уже в ней или на уровень выше можно создавать vendor и класть в нее с полным путем. То есть будет что-то вроде
$GOPATH/src/myproject/vendor/github.com/username/depproject/, а в $GOPATH/src/myproject/main.go в import включаем как "github.com/username/depproject"
| |
|
|
2.44, rob pike (?), 14:52, 16/08/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Хороший язык?
Что такое "хороший язык"?
> Лучше жабки с питонами?
По каким критериям, на каких задачах, в каких условиях?
| |
2.56, Аноним (-), 17:15, 16/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
Для написания I/O bound серверов - хороший, до тех пор пока не упираетесь в GC-паузы.
| |
|
1.80, Аноним (-), 19:47, 16/08/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
А Go - это адекватная замена Python? Вот захотелось научиться программировать, то в какую сторону смотреть? Хотелось бы увидеть развернутый ответ.
| |
|
2.82, Аноним (-), 19:56, 16/08/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
Если для школьных лаб, сгодится и Python. Уровень вхождения очень низкий, гитхаб завален проектами на нем.
| |
|
3.84, rob pike (?), 20:00, 16/08/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
Человек ведь о другом спрашивал.
Между "научиться программировать" и "быстро лабать лабы" разница не просто огромная, но во многом даже принципиальная.
| |
|
4.87, _ (??), 20:49, 16/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
Да не - всё он верно сказал.
Даже вон в "великом и ужастном" MIT - переключились с scheme на Python ....
| |
|
5.95, rob pike (?), 22:35, 16/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
Еще через два десятилетия, когда все джаваскрипты будут состоять уже из одних функторов с монадами, MIT перейдет с Python на ML.
Не нужно переоценивать MIT, и не нужно недооценивать их бюрократизм в поспевании за индустрией.
| |
|
6.118, _ (??), 19:48, 17/08/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
Обучение програмированию (а мы вель о нём?) к "поспеванию за индустрией" ... нк никак! Ну совсем никак! :-) Иди в дупу Роб, лучше го для фряхи почини! :-р
| |
|
7.121, rob pike (?), 20:06, 17/08/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
Это смотря кого стремиться выпускать, "готовых к трудоустройству джава-кодеров на Spring" или, например, людей, способных делать что-то новое и решать сложные проблемы.
Студенты MIT, во всяком случае часть их, которой интересно второе, кстати говоря, к переходу на Python отнеслись очень прохладно и ругали MIT именно на основании того что "мы же MIT а не бангалорский техникум".
| |
|
|
|
10.129, 123 (??), 11:07, 18/08/2016 [^] [^^] [^^^] [ответить] | –1 +/– | Убежали от языков, где легко сделать ошибку по причине неучтенных побочных эффек... текст свёрнут, показать | |
|
|
|
|
|
|
|
|
2.83, rob pike (?), 19:57, 16/08/2016 [^] [^^] [^^^] [ответить]
| –2 +/– |
Нет, неадекватная.
Куда-нибудь в сторону противоположную Алголу60. На языки ML-семейства, например.
| |
|
|
4.94, rob pike (?), 22:30, 16/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
Задачи "найти работу" и "научиться программировать" - это разные задачи, в общем случае ортогональные.
| |
|
3.125, Crazy Alex (ok), 00:09, 18/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
В той стороне - теоретики от CS. Программирование - не там. И да, как альтернатива Питону Go - вполне приличный вариант.
| |
|
4.126, rob pike (?), 01:29, 18/08/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
Программирование - пока не там, но учиться и учить желательно тому где оно будет.
Малоизвестная социальная сеть для котиков уже даже специальный синтаксис для OCaml сделала, чтобы джаваскрипт-поколение проще было переучивать. Даже Java уже с лямбдами.
Поэтому переход MIT с Scheme на Python особенно забавен, в полном соответствии с принципом всегда учить вчерашнему дню.
| |
|
|
2.89, Led (ok), 21:03, 16/08/2016 [^] [^^] [^^^] [ответить]
| –2 +/– |
> А Go - это адекватная замена Python?
Довольно сложно найти адекватную замену чему-либо неадекватному.
| |
|
1.101, Лютый жабист_ (?), 05:19, 17/08/2016 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
"позволяет добиться производительности, сопоставимой с программами на языке Си"
Ох уж эти сказочники... до анси си как ни страдай над кодом, как до луны.
До c++ и то только жабка местами дотягивается. Но её-то мы любим не за то...
А go, rust и остальное - увы, и до жабы не доросли по скорости. :(
| |
|
|
3.105, Аноним (-), 10:50, 17/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
Лол, опять замеры времени старта jvm и вызовов функций на С? Серьёзно. Этот бенчмарк полное г..но, измеряющий непонятно что. Перформанс слишком сложная штука чтобы вот так в лоб сравнивать языки и платформы.
| |
|
4.112, angra (ok), 13:50, 17/08/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
В binary-trees 8 секунд из 12 это старт jvm? А в 23c nbody сколько ушло на старт jvm? А теперь на их фоне глянем на k-nucleotide, выполнившимся за 0.5с, сколько там ушло на этот мифический старт jvm?
| |
4.116, Аноним84701 (?), 17:35, 17/08/2016 [^] [^^] [^^^] [ответить]
| +2 +/– |
> Лол, опять замеры времени старта jvm и вызовов функций на С?
> Перформанс слишком сложная штука
С десяток секунд запускающийся и «разогревающийся» grep или mv? Чур, чур меня от таких «улучшений».
| |
|
|
2.114, Аноним (-), 17:25, 17/08/2016 [^] [^^] [^^^] [ответить]
| +/– |
> Ох уж эти сказочники... до анси си как ни страдай над кодом,
> как до луны.
Расскажи нам, из какого стандарта вот это
[CODE]
_m128 v0 = _mm_shuffle_ps(v.data, v.data, _MM_SHUFFLE(0, 0, 0, 0));
[/CODE]
И как ты собрался писать быстрый код на голом анси. Кстати, анси — это стандарт такой, хотя многие упорно путают с std89.
| |
|
1.120, rob pike (?), 20:00, 17/08/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
> that compiler speedup is bullshit, since the premature switch to the Go bootstrapping compiler in 1.5 slowed everything down 4x
> It's like a store that sells a T-shirt for $10 fifty weeks out of a year and then raises the price to $20 for a week before Black Friday or some other holiday and then puts it 'on sale' for the same price it usually is so they can say 50% off. | |
1.135, Аноним (-), 18:01, 22/08/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Как в структурах теги сделать для нескольких парсеров XML, JSON, Protobuf?
... {
Handle int 'xml:"handle",json:"handle"' - не работает
Handle int 'xml:"handle";json:"handle"' - не работает
}
Кто-то писал и сталкивался?
| |
|