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

С ними все ок, их просто несколько.

С ними всё настолько не ок, что даже не знаю с чего начать.

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

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

Да каком одном проекте? Вот этот один проект импортирует 50 других. И потом этот один проект выкладывают под эмайти и он становится ещё одним – 51-ым.

kostyarin_ ()
Ответ на: Тред не читай @ сразу отвечай от anon8

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

Там же где и крики js хипсторов, что коллбеки это круто и синхронный код нинужен. Скоро исключения подвезут и всё остальное, а царь будет говорить, что они всё своровали.

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

А вы попробуйте всегда говорить правду. Иначе вас могут назвать лжецом…

Ты там мескалина пожрал что ли?

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

Я не люблю лжецов (прошу не путать с фантазёрами и мечтателями), только и всего...

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

Я не люблю лжецов (прошу не путать с фантазёрами и мечтателями), только и всего…

Я тоже не люблю. А ещё я не люблю фантазёров и мечтателей. И тупых анонов.

kostyarin_ ()
Ответ на: комментарий от kostyarin_
Я люблю тое время, когда птичка в клетке.
И не люблю тех людей, кто враг пятилетке.

Владимир

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

Чутка сахара, но работает так же. Даже регионов и проверки всех вариантов (exhaustive matching) нет, что уж говорить про полноценный PM.

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

Не «уместно», а «умеренно».

О да, ситуация прям кардинально изменилась и вы ща сразу объективные критерии «умеренности» сформулируете. Ведь так?

Вы там на своих встречах по интересам любите друг другу показывать наперегонки свои гениальные соображения как написать кучу «ненужно» просто потому, что так «безопаснее», «красивее», «короче на 3,5 строчки»

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

Ну так Go и Rust сделали для того...

Так почему не взяли C? Или C++98? Ведь достаточно же. Смайлодаун зуб давал.

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

И говорите ерунду. Ибо если бы C было достаточно, то те же СУБД писали бы исключительно на C, как и сетевые сервисы. Но ведь нет.

А это потому, что C недостаточно.

Но очевидно, что вы вообще на C не программировали всерьез никогда.

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

Инетерсно, если бы у Мозилы были бы billion-dollar, как бы они оправдывали никому не нужность своего поделия, Вы как думаете? Я думаю, что просто нищие, в отсутствии аргументов, начинают в качестве аргумента выдвигать свою нищету.

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

Speaking at a software conference called QCon London in 2009, he apologised for inventing the null reference:

I call it my billion-dollar mistake. It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references in an object oriented language (ALGOL W). My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the compiler. But I couldn't resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years.

https://en.wikipedia.org/wiki/Tony_Hoare#Apologies_and_retractions

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

Не только, а в частности

в C по-другому просто нельзя

С такой логикой дальше - без меня.

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

Там выше писал, что сравниваю с компилируемыми ЯП.

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

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

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

Go тогда вообще инвалидка двухтактная.

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

А вот на C как пишут, так и будут писать. Заменить то его нечем, в отличии от.

Заменить есть чем, тот же rust или zig вполне могут. Но на практике миллиарды строк никто переписывать не будет, так что си еще долго будет жить и здравствовать.

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

Да, по сути async/await - это костыли. Первый делает чтобы функция возвращала промис, второй делает в такой функции колбек. Но кого это волнует? Всё смотрится также, как будто это синхронный код.

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

Тебя только угловые скобки смущают? А фигурные там, квадратные?

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

hbee ★★★ ()
Ответ на: Тред не читай @ сразу отвечай от anon8

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

Изменяется политика поддержки языка. Раньше всё решал узкий круг «небожителей», теперь будет демократия — за что проголосует плебс, то и будет добавлено в язык.

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

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

Нелишне напомнить, что Go и сейчас полон генериков.

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

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

Когда-то пробовал изучать — не понравился. О единстве дизайна вообще не думают, тащат всё подряд. Например, в интерфейсах можно определять полноценные функции (с реализацией). В интерфейсах, Карл!

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

Это ортогонально компилируемости

Нет, не ортогонально. Скрипты просто всегда более удобны в плане минимума лишней возни. Иначе они просто нафиг никому не нужны. Это просто естественно.

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

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

В случае с демократией, всё решают ораторы. Представляют митинг в поддержку родовых типов в Го, =).

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

Нет, не ортогонально. Скрипты просто всегда более удобны в плане минимума лишней возни.

Речь шла о принудительном соблюдении стиля написания кода. Это ортогонально компилируемости (точнее статической типизации). Из более-менее массовых языков это жестко поддерживается только в питоне и го. Если же брать не массовые то вполне есть nim который с питонообразным синтаксисом и жесткой статической типизацией.

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

man angle brackets

Угу, а ещё можно man whale shark. В Go нет angle brackets.

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

О да, ситуация прям кардинально изменилась и вы ща сразу объективные критерии «умеренности» сформулируете. Ведь так?

Вообще-то, совсем разные понятия «уместно» и «умеренно». За объективными критериями обратитесь к Страуструпу. Ведь это он призывает использовать шаблоны с осторожностью. Напомню его слова:

Be careful about the complexity of the templates you write or use; it is easy to get overenthusiastic and write template code that is too clever to be useful as maintainable production code.

Как Вы их будете трактовать - это Ваше дело. Если Вам нужны разъяснения - напишите письмо автору этих слов - Страуструпу.

Ну вот заботит людей качество и стоимость их работы.

Ну это похвально, конечно. Ну а другие люди заняты разработкой софта без этих ваших «синхрофазатронов» на базе шаблонов и перегрузок, преправленных SFINAE поперёк концептов.

Так почему не взяли C? Или C++98? Ведь достаточно же. Смайлодаун зуб давал.

Так почему же не взяли C++17? Или C++20? Вы же сами показали наглядную демонстрацию эволюции. Ведь прогресс же!

И говорите ерунду. Ибо если бы C было достаточно, то те же СУБД писали бы исключительно на C, как и сетевые сервисы. Но ведь нет.

C достаточно. Но не все же так считают, поэтому и пишут на чём умеют. Но факт остаётся фактом - HTTP сервера промышленого уровня, таких как Apache и NGINX, на C++ нет, а на C - есть.

Но очевидно, что вы вообще на C не программировали всерьез никогда.

Ну да. Я говорю про достаточность C, но на C никогда всерьёз не писал. Хахаха.

anonymous ()

кто-нибудь пишет на go в emacs?
подскажите, как там включить подсветку типов (напр. var s string)

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

Но факт остаётся фактом - HTTP сервера промышленого уровня, таких как Apache и NGINX, на C++ нет, а на C - есть.

Как там дела у браузера на сишке?

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

Ну точно, каждое твоё сообщение достойно /r/pcj. Ты такой типичный среднестатистический представитель вида гоферосапиенс. Странно только видеть тебя (и твоего дружищу kostyarin_) вне ареала вашего обитания.

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

Какой там счет в матче Сишка-Растишка? Такой воен, как ты по-любому ведет счет.

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

Как можно воевать с тем, что уже мертво.

Ты ошибся, воен — Раст не мертв, он даже ещё не родился.

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

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

Ведь смайлодауну C и C++98 хватает для всего.

Смайлодаун зуб давал.

Наблюдал я за этой дискуссией со стороны и задался таким вопросом: «А чем этот пациент eao197 отличается от, скажем, царя?»

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

Как можно воевать с тем, что уже мертво.

Уже даже вбрасывать разучился. Грустно.

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

Что тут сложного?
Просто напишите вкрадчиво «Кому нравится rust?» - аншлаг гарантирован ...

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

Ты такой типичный среднестатистический представитель вида гоферосапиенс

Точно. Только мой ареал обитания — /r/golang. В pcj требуется инвайт.

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

Тем, что «смайлодаун» – это не ругательство, а способ идентификации конкретного анонима, с очень характерной манерой общения.

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

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

Вообще-то, совсем разные понятия «уместно» и «умеренно».

Бла-бла-бла.

За объективными критериями обратитесь к

Ну т.е. заявить про «умеренное использование» — это вы можете, а хоть как-то объяснить, чем отличается «умеренное» от «неумеренного» не можете. Ожидаемо. И авторитетами не нужно прикрываться, Страуструп объективных критериев не обозначает. Так что то, что для меня будет умеренным, для вас может оказаться непомерно сложным и непонятны. Или наоборот. Чистый субъектив.

Как Вы их будете трактовать - это Ваше дело.

Вот именно, см. выше про субъективность.

Ну а другие люди заняты разработкой софта без этих ваших «синхрофазатронов» на базе шаблонов и перегрузок, преправленных SFINAE поперёк концептов.

Да-да. В коде nginx-а это особенно хорошо видно. Дублирование и спаггети на goto.

Можно порадоваться за людей, у них есть время и желание писать так много.

Так почему же не взяли C++17? Или C++20? Вы же сами показали наглядную демонстрацию эволюции. Ведь прогресс же!

А я и не утверждал, что C++-а (в любой его версии) достаточно для всего. А вот вы такие утверждения делали.

C достаточно. Но не все же так считают, поэтому и пишут на чём умеют.

Если бы C было достаточно, большинство писало бы на C. Но как раз C недостаточно.

Но факт остаётся фактом - HTTP сервера промышленого уровня, таких как Apache и NGINX, на C++ нет, а на C - есть.

Как минимум, есть бывший Yahoo, а ныне Apache TrafficServer. А так же есть написанные на плюсах сервисы в Google, Facebook и Yandex.

Я говорю про достаточность C, но на C никогда всерьёз не писал. Хахаха.

Не писали. Это видно.

eao197 ★★★★★ ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)