LINUX.ORG.RU

Опубликован почти окончательный драфт генериков в Go

 


0

10

За подробностями в Go-блог (blog.golang.org/why-generics), там есть ссылка на собственно драфт.

Генерики семантически будут наподобие шаблонов C++, т.е. не boxed (как в Java), а value: компилятор будет генерировать копии с конкретными типами.

Синтаксически удалось обойтись введением всего одного нового ключевого слова contract для описания ограничений типа-значения (то есть для создания чего-то вроде метатипов).

В релизе появится всё это не скоро, в Go 2, срок выхода которого неизвестен. Go 1.13 появится на днях, 1.14 — в ноябре, к десятилетию первого публичного бета-релиза.

★★★★
Ответ на: комментарий от anonymous

Пользователи NGINX довольны и без RAII или defer/scope(exit).

Это пока на баги не наткнуться. А RAII или defer/scope(exit) уменьшают вероятность нескольких классов этих самых багов.

anonymous
()
Ответ на: комментарий от kostyarin_

В Го есть стандарт де-факто форматирования кода. Есть инструменты для рефакторинга. Куча инструментов для code style. Го как раз и есть социальный язык. Чего очень не хватает остальным, по крайней мере компилируемым, языкам.

Практически везде это есть. Да, в тех же крестах стандарт форматирования локален для проекта, как правило, но это ничего не меняет принципиально. Инструментов полно.

anonymous
()
Ответ на: комментарий от anonymous

Это пока на баги не наткнуться. А RAII или defer/scope(exit) уменьшают вероятность нескольких классов этих самых багов.

А, ну да, ещё не наступило то время, когда наконец сервера NGINX начнут натыкаться на баги. Надо просто подождать. Хахаха.

anonymous
()
Ответ на: комментарий от anonymous

А, ну да, ещё не наступило то время, когда наконец сервера NGINX начнут натыкаться на баги. Надо просто подождать. Хахаха.

Прошлое догнало смайлодауна быстрее, чем он смог в очередной раз пёрднуть в лужу:

http://nginx.org/en/CHANGES

*) Bugfix: in error handling in embedded perl.

*) Bugfix: a segmentation fault might occur on start or during
   reconfiguration if hash bucket size larger than 64 kilobytes was used
   in the configuration.

*) Bugfix: nginx might hog CPU during unbuffered proxying and when
   proxying WebSocket connections if the select, poll, or /dev/poll
   methods were used.

*) Bugfix: in the ngx_http_xslt_filter_module.

*) Bugfix: in the ngx_http_ssi_filter_module.
eao197 ★★★★★
()
Ответ на: комментарий от kostyarin_

Го как раз и есть социальный язык

Ну да, язык для «бедных»... Еще раз повторюсь, попробую объяснить на «кошках». Если вы пишите статью, в которой куча воды, то это не означает, что она легко читаема и легко редактируема. Вот программы на Го это статьи с кучей воды.

И на этой аналогии работает другая мудрая мысль: Если я хочу отнять у вас 5 минут, то я готовлюсь неделю. Если хочу отнять 15 минут - пару дней. Если я хочу отнять у вас целый день, то давайте начнём разговор прямо сейчас.

foror ★★★★★
()
Ответ на: комментарий от anonymous

Практически везде это есть.

У меня большие сомнения на этот счёт. Потому что раньше социальное программирование никого не волновало. И все стандарты существовали в рамках организации.

Да, в тех же крестах стандарт форматирования локален для проекта, как правило, но это ничего не меняет принципиально.

Локален для проекта. Импортировать которые в свой, с необходимостью исследовать их сорц, я могу сразу несколько. Нету единого стандарта на уровне языка. Каждый сидит в своей песочнице с вытекающими. Социальное программирование – это нечто отличное от того, что «есть во всех языках».

Инструментов полно.

Довольно размытое высказывание. Есть ли для Плюсов, например, инструмент для, например определения цикломатической сложности функции. Это сложность для чтения кода для стороннего программиста, типа «не слишком ли много ты пихаешь в одну функцию, друг».


Я уже молчу про систему сборки и прочее. )

kostyarin_ ★★
()
Ответ на: комментарий от eao197

Прошлое догнало смайлодауна быстрее, чем он смог в очередной раз пёрднуть в лужу

Уу, как быстро Вы сдулись в своих любезностях и скатились к оскорблениям. Весьма дешёво смотрится.

Что Вы показали тут? Типичный перечень багфиксов. И дали ссылку на changes. Сильно. На конференциях по C++ тоже такое показывают за кулисами? Следующих шаг - теперь нужно показать багфиксы Chrome. Сможете? :-)

anonymous
()
Ответ на: комментарий от kostyarin_

И, судя по всему закономерно, Го практически отсутствует в сфере графики и физики.

Отсутствуют, потому что конский overhead при работе с C by design. OpenGL, Vulkan... Ничего нельзя нормально использовать. Только если выполнять большие куски работы отдельно в C / Go и реденько взаимодействовать. Поэтому зимыгеймдева тоже не будет.

anonymous
()
Ответ на: комментарий от anonymous

А, ну да, ещё не наступило то время, когда наконец сервера NGINX начнут натыкаться на баги

Если вы не натыкались, значит что-то тривиальное делаете. Почти все пользователи nginx, которых я знаю, натыкались. У а уж те, что имели «счастье» писать модули на сишечки к нему...

anonymous
()
Ответ на: комментарий от turtle_bazon

Угловые - они самые коварные же. Они могут напомнить hbee о том случае, когда его нагнули. А ему этого лучше не вспоминать.

anonymous
()
Ответ на: комментарий от foror

Ну да, язык для «бедных»

Ну Вы же в речи используете слова и выражения так, чтобы они были понятны многим. Если Вы начнёте использовать заумные слова, то Вам просто не с кем будет говорить. Потому что «богатые» почти не умеют объединяться, и сидят такие все красивые и умные в гордом одиночестве. Социальное программирование и может быть только для бедных – тут вариантов нету. Какие-нибудь сложные языковые конструкции, которые «всё так упрощают» (но понятны только Вам и ещё парочке) не понятны больше никому. Жить в обществе – это считаться с ним. А не «выбирать бриллианты из кучи говна». В этом и есть суть. Да для бедных. И это и есть цель, суть, фишка и хорошая черта, сильная черта. Отклонение от этого – потеря взаимодействия с целым пластом людей. А «богатые профессора» неплохо обходятся и без Го. Го изначально не для них, всё просто.

P.S.: Да, кстати, асинхронная работа и switch у Го нагибают любой другой язык в плане синтаксиса и прочего. Так что кто там по настоящему «богатый», а не в своих мечтах – это ещё вопрос.

kostyarin_ ★★
()
Ответ на: комментарий от anonymous

Отсутствуют, потому что конский overhead при работе с C by design

Они еще умудрились и здесь просрать все полимеры? Как только взлетело это поделие, просто не понимаю...

foror ★★★★★
()
Ответ на: комментарий от kostyarin_

Нету единого стандарта на уровне языка

Так он и не нужен. А инструменты есть. clang-format тот же.

Есть ли для Плюсов, например, инструмент для, например определения цикломатической сложности функции

Даже PVS-Studio это умеет=)

anonymous
()
Ответ на: комментарий от anonymous

Если вы не натыкались, значит что-то тривиальное делаете. Почти все пользователи nginx, которых я знаю, натыкались. У а уж те, что имели «счастье» писать модули на сишечки к нему...

Ну хорошо. Критикуешь - предлагай. Что взамен NGINX? Apache? Ах да, он тоже на чистом C. А где же сервер на C++, который весь из себя современный, весь такой на шаблонах с метапрограммированием? А, ну да, он есть, но в секретных репозиториях, неопубликован просто. А если опубликован, то используется нигде, т.к. недооценен. :-)

anonymous
()
Ответ на: комментарий от kostyarin_

Я уже молчу про систему сборки и прочее

С ними все ок, их просто несколько. Cmake сейчас почти стандартом становится. А conan для пакетов(но пакеты не слишком популярны, думаю, из-за наличие нативных пактов в дистрах).

anonymous
()
Ответ на: комментарий от anonymous

А где же сервер на C++, который весь из себя современный, весь такой на шаблонах с метапрограммированием?

А зачем его писать-то, когда уже есть другие продукты?

anonymous
()
Ответ на: комментарий от anonymous

Уу, как быстро Вы сдулись в своих любезностях и скатились к оскорблениям.

Вообще-то я впрямую назвал вас надмозгом чуть ли не сразу, поскольку это было очень уж очевидно. А то, что вы только сейчас осознали, что вам чуть ли не открытым текстом указывают на ваши умственные способности, лишний раз эти способности демонстрируют.

Что Вы показали тут? Типичный перечень багфиксов.

Для тупых: этот перечень является прямым доказательством наличия багов в nginx. Появление которых вы только-только ждать собрались.

На конференциях по C++

Ох, дались вам эти конференции. Никто ж не виноват, что вы никто и звать вас никак. Заявитесь на конференцию. Еще есть пару дней, чтобы на C++Piter 2019 попасть. Может самооценка улучшиться, перестанете завистью исходить.

А где же сервер на C++, который весь из себя современный, весь такой на шаблонах с метапрограммированием?

Ну вот для встраивания HTTP-сервера в C++ приложения почему-то берут не nginx, а как раз современные, все из себя на шаблонах.

eao197 ★★★★★
()
Ответ на: комментарий от kostyarin_

В этом и есть суть. Да для бедных.

Ходим кругами. Вернулись к началу, где речь шла о ЯП для бедных говнокодеров. Да пожалуйста, просто не надо называть их код легко читаемым. А про рефакторинг там и не слышали вовсе или не совсем понимают, что это такое.

А «богатые профессора» неплохо обходятся и без Го.

Зачем вы кидаетесь в крайности? Есть нормальные промышленные ЯП, на которых можно не боясь рефакторить код индусов. И это не Го.

Да, кстати, асинхронная работа и switch у Го нагибают любой другой язык в плане синтаксиса и прочего.

У вас очень поверхностные знания по остальным ЯП, раз вы так заявляете.

foror ★★★★★
()
Ответ на: комментарий от kostyarin_

switch у Го нагибают любой другой язык в плане синтаксиса и прочего.

switch да хороший у go, но до паттерн матчинга (хотя бы как у раста) никак ни дотягивает.

anonymous
()
Ответ на: комментарий от WitcherGeralt

Вот только на языках «для богатых» (растах, хаскелях и прочем) почти никто ничего полезного не пишет.

Ну С++ тоже язык для «богатых» по сравнению с go. Java и C# начинали как языки для бедных (без шаблонов и сахара) в результате пришли все-равно к «богатству» (особенно C#).

С другой стороны есть и языки для бедных на которых (даже по сравнению с хаскелем) никто ни пишет, например оберон, по идеологии это чистый go только с паскалевским синтаксисом.

anonymous
()
Ответ на: комментарий от WitcherGeralt

Вы про средний класс забываете, на нём всё и пишут и на них всё ИТ держится. Но там сплошное легаси. Люди ждут нового, нормального ЯП для среднего класса. А выдают пока всякие Го и Ржавые.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 2)
Ответ на: комментарий от anonymous

На конкретных примерах показана самодостаточность и достаточноть чистого C для создания программного обеспечения любого уровня сложности.

Садись, кол! Эти примеры доказывают только пригодность си для написания программ, критичных к потреблению памяти и скорости исполнения. Отсутствие на си программ уровня Open Offcie или Netbeans говорит о малой пригодности си для написания больших расширяемых программ. И трудозатраты на ядро линукса лишь подтверждают это.

yyk ★★★★★
()
Ответ на: комментарий от yyk

Садись, кол!

Ух, какой Ярослав Кавенчук, однако, строгий! Ой, боюсь.

Эти примеры доказывают только пригодность си для написания программ, критичных к потреблению памяти и скорости исполнения.

Не только, а в частности. Понимаешь, Ярослав, в C по-другому просто нельзя.

Отсутствие на си программ уровня Open Offcie или Netbeans говорит о малой пригодности си для написания больших расширяемых программ.

Лол. Open Office или Netbeans - это хеллоуворлды по сравнению с PostgreSQL или Linux.

И трудозатраты на ядро линукса лишь подтверждают это.

А, ну и, кстати. Отсутствие ядер на C++ лишь подтверждает превосходство чистого C над C++ :-)

anonymous
()
Ответ на: комментарий от eao197

Вообще-то я впрямую назвал вас надмозгом чуть ли не сразу, поскольку это было очень уж очевидно. А то, что вы только сейчас осознали, что вам чуть ли не открытым текстом указывают на ваши умственные способности, лишний раз эти способности демонстрируют.

Ну, совсем сдулся мой оппонент. Становится скучно.

Для тупых: этот перечень является прямым доказательством наличия багов в nginx. Появление которых вы только-только ждать собрались.

Для гениев: это ничего не доказывает. Баги есть вообще везде, в т.ч. и в программном обеспечении на Вашем любимом C++, натыканном RAII и прочими SFINAE.

Ну вот для встраивания HTTP-сервера в C++ приложения почему-то берут не nginx, а как раз современные, все из себя на шаблонах.

Ну то для встаивания в приложения. Только вот, почему то, почти все, кто так делает, размещают в продакшене свои приложения со встроенным HTTP-сервером на C++ за реверсивным прокси, которым обычно служит NGINX. :-)

anonymous
()

Тред не читай @ сразу отвечай

Вот скажите, а как же прежние заявления создателей о том, что «в го нинужны дженерики»?

anon8
()
Последнее исправление: anon8 (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ну, совсем сдулся мой оппонент.

Никто и не надувался. А вот ответа про оценку «уместности» как не было, так и нет.

Баги есть вообще везде

Вы это самому себе расскажите, а то у вас какие-то провалы:

ещё не наступило то время, когда наконец сервера NGINX начнут натыкаться на баги

eao197 ★★★★★
()

Похоже старых пердунов вынесли из руководства. Отсутствие дженериков или другого подобного инструмента - явный признак убогости языка.

ox55ff ★★★★★
()
Ответ на: комментарий от eao197

Никто и не надувался.

Ой, да ладно :-)

А вот ответа про оценку «уместности» как не было, так и нет.

Был ответ. Никто из вменяемых Вам не укажет как «надо» и как «не надо». Вам сказали, что надо умеренно использовать шаблоны. Как это понимать - это Ваше личное дело. Мне всё понятно - возможностей C и C++98 хватает совершенно для всего.

Вы это самому себе расскажите, а то у вас какие-то провалы:

ещё не наступило то время, когда наконец сервера NGINX начнут натыкаться на баги

Ну для гениев я поясню. Дело в том, что всем пользователям NGINX (а их примерно треть Интернета, наверное) чихать на RAII в C++, с помощью которой можно переписать указанный Вами фрагмент кода NGINX. Сервера NGINX работают вот прямо сейчас, несмотря на те багфиксы, которые Вы тут представляли. А NGINX написан на C, а не на C++, к Вашему сожалению, конечно, но это факт реальности. Просто смиритесь, что C++ не так уж нужен, как Вы это себе нафантазировали.

anonymous
()
Ответ на: комментарий от foror

Да пожалуйста, просто не надо называть их код легко читаемым

Я не в курсе, о каких «их» Вы говорите.

Лично свой код я понимаю, код большой части разработчиков Го, с которым имею дело понимаю отлично. Код стандартной библиотеки тоже. Остальное меня не волнует. По крайней мере бесплатно не волнует.

Зачем вы кидаетесь в крайности? Есть нормальные промышленные ЯП, на которых можно не боясь рефакторить код индусов. И это не Го.

Просто Вы старательно не хотите понять как оно устроено в реальной жизни, а не в теоретическом вакууме.

У вас очень поверхностные знания по остальным ЯП, раз вы так заявляете.

Достаточная чтобы так заявлять.

kostyarin_ ★★
()
Ответ на: комментарий от anonymous

Ой, да ладно

Инфа соточка.

Никто из вменяемых Вам не укажет как «надо» и как «не надо».

Т.е. все эти ваши «уместно» мягко говоря идут лесом, потому что, очевидно, что, что уместно для меня, разорвет вам мозх. Или что там у вас.

Мне всё понятно - возможностей C и C++98 хватает совершенно для всего.

То-то люди сделали Go и Rust, не говоря уже про C++11, 14, 17 и уже 20.

Ведь смайлодауну C и C++98 хватает для всего. И его даже не смущает сам факт того, что в «С и C++98» уже скрывается серьезное противоречие.

Дело в том, что всем пользователям NGINX (а их примерно треть Интернета, наверное) чихать на RAII в C++, с помощью которой можно переписать указанный Вами фрагмент кода NGINX.

Так мы же не с точки зрения пользователей говорим, а с точки зрения разработчиков. А то ведь можно в ответ браузеры привести, коих сколько на чистом C?

А NGINX написан на C, а не на C++, к Вашему сожалению, конечно, но это факт реальности.

Да мне, в общем-то, похрену. Пока работа не заставляет в C-шное гуано нырять. Хорошо хоть не с головой.

eao197 ★★★★★
()
Ответ на: комментарий от anonymous

Ты хоть смотрел код nginx? Он не решает сложных задач. Только правильное использование системных вызовов и работы с пулами памяти(хотя можно лучше). На что ты фапаешь?

anonymous
()
Ответ на: комментарий от kostyarin_

Участников чего? На одном проекте все и используют один стиль и какой-нибудь из инструментов автоматизации/проверки.

anonymous
()
Ответ на: комментарий от eao197

Т.е. все эти ваши «уместно» мягко говоря идут лесом, потому что, очевидно, что, что уместно для меня, разорвет вам мозх. Или что там у вас.

Не «уместно», а «умеренно». Не было сомнений в Ваших способностях фантазировать. Что касается разрыва мозга, так это вообще вне всяких сомнений. Вы там на своих встречах по интересам любите друг другу показывать наперегонки свои гениальные соображения как написать кучу «ненужно» просто потому, что так «безопаснее», «красивее», «короче на 3,5 строчки» да и вообще «современнее», и в «ногу со временем» (бугага). Так что тут я оставляю Вас с самим собой. Упражняйтесь на здоровье :-)

То-то люди сделали Go и Rust, не говоря уже про C++11, 14, 17 и уже 20.

Ну так Go и Rust сделали для того, чтобы не писать на C++11, 14, 17, 20, 24 и т.д. А вот на C как пишут, так и будут писать. Заменить то его нечем, в отличии от.

Ведь смайлодауну C и C++98 хватает для всего. И его даже не смущает сам факт того, что в «С и C++98» уже скрывается серьезное противоречие.

Никакого противоречия нет. C++98 добавляет в C главную фичу - деструкторы. Ну и виртуальные функции. Удобно же. Остальное, в принципе, и ненужно.

Так мы же не с точки зрения пользователей говорим, а с точки зрения разработчиков.

А я говорю про достаточность C для написания софта любой сложности. Ну и в примеры приводятся NGINX и PostgreSQL, в которых прекрасно обошлись без RAII.

Да мне, в общем-то, похрену.

Ну вот, собственно, и пришли к завершению :-)

anonymous
()
Ответ на: комментарий от WitcherGeralt

Богатства там не больше чем в заниженной девятке.

Почему? В шарпе много возможностей и они на удивление хорошо сочетаются. Вообще хороший дизайн языка.

anonymous
()
Ответ на: комментарий от foror

Скоро в питоне многопоточность починят и средкий класс успокоится.

На самом деле нет. Но многопоточность действительно могут починить. Какой-то чувак в core team из мелкософта хочет отвязать субинтерпретаторы от общего GIL, а для них как раз скоро высокоуровневый модуль завезут. Жуткое костыльное уродство, но благодаря каналам, которые завезут с модулем, и следующего из этого CSP, народ может и схавать.

WitcherGeralt ★★
()
Ответ на: комментарий от anonymous

Сисярп не знаю, но на джаве код получается тупым и многословным.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Скоро в питоне многопоточность починят и средкий класс успокоится.

В Java скоро многое починят и опять же средний класс успокоится.

foror ★★★★★
()
Ответ на: комментарий от foror

Долго везли, почти все крестьяне уже умерли от голода 😉

ritsufag ★★★★★
()
Последнее исправление: ritsufag (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.