LINUX.ORG.RU

почему голанг - это кул

 


1

3

Голенгу никогда не догнать сишечку, потому что в нём нельзя циклические зависимости. В Си можно, в Паскале можно. Это, наверное, самая плохая новость для меня за всё время его изучения.

★★★★★

Последнее исправление: den73 (всего исправлений: 2)

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

Ошибку видно в сигнатуре функции, в отличие от исключений.

Исключения тоже видно. Внезапно в яве объявляется что метод может выкинуть. Хочешь обрабатывай каждое, хочешь все скопом, хочешь, хоть на кодах возврата сделай. Никто никого тут не форсит.
Что кстати за тема такая в ЯП что-то форсить. Одни ООП, другие async, третьи отступы, четвёртые - коды возврата. Почему все думают, что они одни знают как надо правильно писать код?

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

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

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

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

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

Это всего лишь сахар, реально ничего не изменится.

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

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

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

Дооо. В средних методах обычно кода побольше, чем у тебя в примере. Что ты будешь делать после вызова 10 методов с возвратом ошибки? Правильно, не идти против течения и 10 раз его возвращать. Или засунешь все данные в один класс и будешь его пропихивать везде вместо агрументов/с агрументами, а функции будут сразу возвращать err, если он уже там был.

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

Про panic уже говорили, что его лучше не пихать везде и это - не exception.

Так это неправда. Panic - это Exception, просто по-другому оформлено (кстати, местами лучше).

https://stackoverflow.com/questions/3413389/panic-recover-in-go-v-s-try-catch...

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

Внезапно в яве объявляется что метод может выкинуть.

Как я понял, checked exceptions не прижились в Яве

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

Собственно, со своим err error голанг на них тоже забил. Глядя на сигнатуру функции в голанге, мы не знаем:

  • может ли функция паниковать
  • может ли в ней вызываться os.Exit
  • если у неё есть возвращаемое значение типа error, то какие виды ошибок она может вернуть в err

Впрочем, это лучше подходит для темы golang - не хочу возвращать err, хочу паниковать!

Более того, если в Java принято сортировать ошибки по классам, то в голанге я уже столкнулся со случаем, когда ошибку нужно сравнивать с какой-то константой! Т.е. совершенно непонятно из сигнатуры, как обрабатывать ошибку.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 3)
Ответ на: комментарий от feofan

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

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

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

которые можно еще собрать и дать вендузятнкам как один бинарник и им не нужно больше ныть про «этожы пееетооон ставитиить!»

Что мешает собрать программу на Питоне? pyinstaller / cxfreeze

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

Завершается, ибо хипстота ноет и пытается ломать язык, вместо следования заложенным в него принципам. Ты сам выше уже сказал что бы ты городил вместо обработки ошибок на месте. Проблема чаше не в конкретном языке, а в толпе ленивых и «не таких как все разрабов», ведь почти все мейнстримные языки скатываются начинают обрастать корками сахара, либо их меняют транслируемым / компилируемым языком под ту же экосистему и интерпретатор.

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

То есть Пайк, Томсон и Грисемер врут, что это их собственная идея и инициатива, а на самом деле Go — это коварный теневого интеллекта Google, а их поставил как ширму?

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

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

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

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

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

можно забить на возвраты ошибок

На обработку ошибок нельзя забыть случайно, в отличие от. Плюс декларация.

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

C# будет жить. Просто где-то в этом мире есть параллельная вселенная, где используют Windows Server, пишут бизнес-логику на C# и смотрят на Linux как на непонятную неудобную штуку.

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

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

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

Владимир

Не, не так
На кухне стоящая колонка «Маня» будет на лету читать мысли, ...

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

То есть Пайк, Томсон и Грисемер врут, что это их собственная идея и инициатива, а на самом деле Go — это коварный теневого интеллекта Google, а их поставил как ширму?

Да, именно так. Никаких патлатых самоделкиных в современном мире чистогана не существует (вернее они есть, но про них никто не узнает), всем заправляет отдел маркетинга. Это не означает, что Пайк и ко вообще ничего не делали. Нет конечно, они получили заказ и адаптировали старые наработки (newsqueak, limbo) под этот заказ. Но это могли сделать и любые другие нонеймы с тем же успехом (на самом деле не с тем, ибо нет авторитета). При этом реальные собственные инициативы того же Пайка не взлетели и мало кому известны.

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

они получили заказ

Ага, всё остальное тоже заказ рептилоидов, а Земля на самом деле плоская.

При этом реальные собственные инициативы того же Пайка не взлетели

Так он Bell labs работал, занимаясь в основном исследованиями. Это норма.

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

Это кстати очень заметно, что язык делал титиретик вроде Вирта далекий от практического программирования, да еще и проспавший все наработки в области типизации за последние 30 лет. Так что авторство Пайка несомненно.

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

Придумал ли Пайк это всё по собственной инициативе и на собственном энтузиазме. Или вся его пропаганда и энтузиазм проплачены Гуглом.

Честно говоря, независимо от того, какое из этих утверждений верно, моё уважение к Пайку весьма сильно пошатнулось.

А если вдумчиво почитать Worse Is Better, то и к прочим ветеранам юникса вопросы могут возникнуть.

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

язык делал титиретик вроде Вирта

Не гони. Го, как раз, язык очень практичный, с точки зрения гугла и прочих корпораций. А Вирт, как и Пайк, скорее инженеры, чем учёные-теоретики.

А вообще говоря, современной индустрии IT особо не нужны ни учёные, ни инженеры. Го гуглу просто удачно подвернулся.

наработки в области типизации за последние 30 лет.

А вот этим как раз теоретики больше занимаются. Последним наработкам, вроде Idris'а, до продакшена ещё ой как далеко.

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

Да, Пайк с Виртом это инженеры-титиретики. Отличительная особенность их языков: сверхценная идея (в данном случае минимализм) и набор принципов, которые авторы блюдут с религиозным рвением. Все, что не вписывается в их видение правильной системы, решительно отметается.

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

Примеры реально практичных языков: C, C++, Perl, PHP. То есть те, где абстракции и выразительные средства не из пальца высосаны (или изничтожены по идеологическим соображениям), а соответствуют практическим задачам программистов.

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

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

Твои критерии глуповаты и очень зыбки. Где у тебя, например, гарантии, что Ларри Уолл создавая Perl ничего не «высосал из пальца»? Нету у тебя таких гарантий, потому что даже сам Ларри Уолл тебе зуб не даст, что ничего не «высосал».

а соответствуют практическим задачам программистов.

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

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

Так ведь его до сих под изучают в шарагах и некоторых вузах. Из-за паскалеутят он так и не помер с концами.

Просто сишке повезло больше

Это не везение, а естественный отбор.

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

Однако нет: https://www.lysator.liu.se/c/bwk-on-pascal.html

Ну, статья сильно устарела всё же, массивы неопределённой длины появились давно, как и нормальные модули, а не костыльное убожество с include'ами, позволяющие, в числе прочего, скрывать статическое состояние от глобального пространства имён. И нетипизрованные указатели (тип Pointer). Да и continue/break в циклы добавили. Наверное, это всё в Turbo Pascal, но всё же. А точки-с-запятой и в Си местами черезжопные.

Да и все эти замечания не помешали создать Oberon System на основе Паскаля.

Не, я не защищаю Паскаль, но статья так себе. Где-то уже, довольно давно, натыкался то ли на критику этой статьи, то ли на более поздние высказывания Брайена о статье, что, мол, «писал под эмоциями, не стоит воспринимать в серьёз, всё не так плохо в Паскале», но гуглить не хочу.

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

Например, Ларри Уолл высосал из пальца идею контекстов, но на практике они хорошо себя показали, хотя не все их осиливают. С другой стороны, он высосал из пальца идею, что ссылки не нужны, а практика эту идею отвергла, и ссылки таки добавили, равно как и объекты. Также в перл добавили лексические области видимости, потому что это требовала практика. При этом Ларри не кидался грудью на амбразуру защищая свой божественный дизайн (который имел достаточно прорех), а принимал изменения. Похожим образом эволюционировал C++. В то же время виртовские языки словно высечены в граните. Чтобы что-то добавить новое Вирт делал новый язык. Этот подход тотально провалился.

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

Ну так и про C (а особенно про ужас под названием K&R C) тоже критики достаточно. Имхо, между ними нет явного победителя, а есть старый спор теоретиков с практиками.

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

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

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

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

Прикалываешься? Синтаксис си будто троечником назло преподу делался, от контекстной зависимости до нечитаемых объявлений. Короче паскаля выходит, да, но в норме побеждает не перл.

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

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

Сильно позже, и проприетарщина. А юникс дописывали все кому не лень.

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

может ли функция паниковать

Функция не должна паниковать, а если и паникует, то это жопа и нет смысла делать recover, ибо паника там не для этого.

может ли в ней вызываться os.Exit

Толсто.

если у неё есть возвращаемое значение типа error, то какие виды ошибок она может вернуть в err

Ты же в точности знаешь, что есть ошибка, идёшь и смотришь в доку, проблема-то.

WitcherGeralt ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.