LINUX.ORG.RU

Почему Go это плохо, и он вам, на самом деле, не нужен.

 ,


7

15

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

Дело в том, что Go это, на самом деле, «решение» внутренних гугловских проблем. Но отнюдь не проблем горизонтального масштабирования серверного ПО, как многие почему-то думают. Он приспособлен специально для использования в гугле вот в каком контексте.

Гугл нанимает большое количество тупых студентов, только-только после вуза или ПТУ, и заставлять их писать хоть какой-то простой код. И делать минимум ошибок, при этом. Для этого Go сделан таким тупым и упрощенным. И выкинут в паблик он только для того, чтобы вероятность, что у такого студента, только пришедшего в гугл, было хоть какое-то знание Go, была выше нуля.

Но дело вот в чем. В гугле, на самом деле, над каждой командой гошников стоит тимлид, или целая группа, который/которая вот этим взаимозаменяемым роботам-гошникам расписывает всю систему, чуть ли не вплоть до состояния конечного автомата, до if-ов, и показывает куда и что писать. Поэтому же Go на корню режет всю креативность, поэтому там нет практически никаких средств абстракции, и поэтому он не дает делать вообще ничего сложного. Дабы программисты на нем вообще ничего лишнего не думали, а кодировали все чуть ли не побуквенно по указаниям умных людей.

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

Тут возникает вопрос - а почему этому тимлиду не дать в руки кодогенератор, вместо всей этой accidental complexity, возникающей из-за огромного количества строк кода, и из-за затрат на коммуникацию?

А тут надо понимать, как внутри устроены огромные корпорации типа гугла.

Их давно пожрал рак бюрократии. Там у менеджерских и околоменеджерских должностей один из главных критериев промоушнов, или вообще даже ассесмента(усидения на должности), это количество людей у тебя в подчинении. И количество говнокода в вакууме которая твоя команда написала. И вот все эти люди, сидящие на более-менее средне-высоких должностях, постоянно бодаются за эти промоушны и ассесменты. Это их главная и единственная цель. Поэтому, ни о какой эффективности тут речи не идет вообще от слова совсем. Тут главное - корпоративные игры, количество голов в твоем стаде и количество и размер высеров, которые это твое стадо произвело(причем буквально, важны SLOC).

Естественно, это все отражается на качестве продуктов, и это видно как по полному прекращению инноваций в гугле, так и по постоянно мелькающим и закрывающимся высерам этой компании - hangouts, duo, google plus, google wave, и прочее и прочее, можете еще вспомнить много чего.

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

Никакой мифической простоты в отладке и в понимании кода Go не приносит. Да и сложность программных систем растет совершенно не из-за понятности/непонятности какой-то отдельной взятой строчки кода или функции. Потому, что, во-первых, понятность это понятие субъективное, во-вторых потому, что, отдельно взятая фунцкия на 5 строк понятна любому опытному программисту, будь она написана хоть на Rust, хоть на Common Lisp.

Сложность программных систем возникает из-за их размера. И Go эту проблему значительно ухудшает. Человек не может удерживать в голове слишком много вещей, даже если каждая отдельная вещь - очень простая. Количество RAM в голове ограничено.

В случае если вы не хотите выкидывать кучу денег просто так, и скорее предпочли бы нанять немного, но более-менее опытных программистов, Go будет только вреден, потому что все вменяемые люди от него, на самом деле, плюются. Он реально отталкивает опытных людей, которые способны понять сложные требования и написать, и поддерживать, более-менее сложные системы уровнем хотя бы нескольких сервисов плюс БД и MQ.

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

Что Рич Хикки (и видимо ты) страдал от невозможности различать и записывать коротко массивы и хэши в лиспе, я понял. Но я не думаю, что все здоровые лисперы (да, на этом месте я и сам фыркнул) прям так таскают везде набор макросов, превращающих скобочный лисповый синтаксис в что-то прекрасное. А другая макросня это неизбежность. Если фича есть, то ее будут использовать. А если не по делу – быдлокодеры есть везде.

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

Это тебе за квадратные и фигурные скобки вместо круглых, получай! 😄

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

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

Простое решение для параллелизма которое внедрил Rich Hickey в виде Clojure когда на рынок стали массово выходить многоядерные процессоры. Но оно неэффективно с точки зрения производительности.

Rob Pike & Co дали решение с мутабельностью в Go. На основе идей реализации языков которые они обдумывали с 1980-90-х.

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

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

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

оно неэффективно

Как страшно жыть.

Rob Pike & Co дали решение с мутабельностью в Go

На уровне рекомендаций, ага. Share by communicating, угу. Делойте всё хорошее, а плохое не делойте %)

Ну в общем да, горутины это удобный способ не делоть плохова. Только вот в кложе для облегчения мук c concurrency есть и горутины в виде core.async, и эффективные персистентные структуры данных. И кое-что ещё.

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

Все-таки есть что-то глубоко противоестественное в записи этими скобочными деревьями

Ты чё, ты чё, это же WYSIWYG!

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

И факт, что сейчас слишком многие тыжпрограммисты из-за меркантильных соображений, а не потому что в детстве на трубопаскале игры писали консольные. Какой им Лисп?

Эти соображения подбрасывались для популяризации выбора этой «карьеры», для увеличения выборки из соискателей на вакансиях в корпорациях. Чтобы получать как в Сан-Франциско, нужно и жить в Сан-Франциско где не хватит на аренду.

Все эти «отделы кадров» столкнулись с проблемами которые сами не не могут осознать. Программист Javascript чтобы понять принцип async/await должен представлять стэк и очередь FIFO. Когда сворачивается стэк то проверяется FIFO. Глубже есть асинхронные API в ОС. И то что однопоточность не всегда избавляет от необходимости в блокировке типа muteх чего нет в JS. Конкурентность на уровне логики где сохраняется промежуточное состояние всё равно есть.

Сколькие это так реально понимают? Значит завлечение вынужденная мера для отбора выживших. Рассказы об успехе в карьере это survivorship bias, ошибка выжившего. Смешной тренд был недавно когда уволенным журналисты советовали «научиться кодить», а потом советовали самим уволенным журналистам. Но такой тип троллинга начался где-то после 2008 когда какой-то тип доказывал что обучает бомжей в Нью-Йорке javascript и те поднимаются, сидят с ноутбуком на улице.

Автор Go, канадец Rob Pike 67 лет. Многие proposals для Go это такие как швейцарец Robert Griesemer 59 лет. Тусовка пользователей по которой чаще внешне формируют отношение к языку это ширма.

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

На уровне рекомендаций, ага. Share by communicating, Ну в общем да, горутины это удобный способ не делоть плохова.

Не горутины а channels на основе эксклюзивного доступа со скрытой синхронизацией в реализации. Сами горутины ничем не ограничены, имеют полный несинхронизированный доступ если не используют mutex. С самого начала было честно сказано что это для замены C++.

Ничего другого не будет изобретено. Только Rust где нужно отслеживать lifetime каждой переменной.

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

Ничего другого не будет изобретено.

Шо, опять конец истории? %)

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

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

2023
Лицензия Delphi 11.3 в данный момент. Это современный Object Pascal.
Professional $1200
Enterprise $3000
Architect $4600

Когда есть совместимый Free Pascal. Делают софт для клиник, производств. Как один исполняемый файл.

Lispworks цены не ниже, их даже не афишируют. Уже есть пользователи технологии которые контактируют и перечисляют сколько надо. Тайвань указан как отдельный регион. Индустриальные экономики где возникает спрос на реализацию каких-то систем для которых не подходят готовые решения от корпораций наверное.
Когда есть бесплатный SBCL.

Если что было разработано на Common Lisp 20-25 лет назад - это будет запускаться и работать сейчас.
Go придерживается похожего подхода по возможности.

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

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

Ничего другого не будет изобретено.

как ничего другого, если они тут же изобрели Dart. и еще изобретут много чего, когда голанг покажется слишком сложным.

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

Dart реализация tried&tested технологий.
Всё полезное из Java, C#, Ruby(mixins), Javascript. Компиляция ahead of time.
Есть symbols видa #word для предотвращения обфускации имени при компиляции.
Pattern matching.
Throw может бросать наверх любой объект без создания Exception().
Enums
Null safety, альтернатива модели Rust.
LSP сервер в поставке. Полноценный режим для Emacs.

Некоторые разработчики языка считают что async/await было ошибкой, что goroutines лучше.
Культовая статья «what color is your function» 2015.

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

Напиши макросню, которая спрячет бройлерплейт, стандартно.

Какой-то японец написал, но популярности его макросы не получили: https://github.com/cl21/cl21 (или здесь: https://lispcookbook.github.io/cl-cookbook/cl21.html).
Такое ощущение, что в лиспе остались одни старички, которым ничего менять не хочется. В clojure хоть какие-то новые идеи есть.

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

Какой-то японец написал, но популярности его макросы не получили: https://github.com/cl21/cl21

Идеи выглядят стройно, но я не могу оценить годность, потому что не знаю, что он предлагает своим cl21 заменить в CL. Может, он пытается поменять то, что большинство лиспохацкеров устраивает? Вот Рич Хикки правильно поступил – приделал свой не-лисп к жабомашине. Теперь можно делать вид, что выбирающие кложу выбирают квадратные скобки (и фигурные) и STM еще же есть, которую тут несправедливо не разрекламировали (хотя и упомянули правда). А либы джавы как будто так, приятная опция, которой могло бы и не быть, мы бы всё равно взяли кложуру, она такая классная! 🙂

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

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

Это тебе мешает. Что реально мешает, видно на примере того же проекта Лавсана в другом треде, где можно настроить Лисп, чтобы он удобно дергал шарповские либы. То есть лисповских либ-аналогов нет, а их надо, разных и нужных. Толку от чудесного синего трактора, если к нему никакое существующее навесное оборудование не подходит и остается только кататься по полям с ветерком, потому как никакой работы на нем выполнять нет возможности? 😁

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

да такие любители «modern» синтаксис прикрутить - возникают каждый год

лисперы к этому интереса обычно не проявляют по причине «ненужно»

потому что, как я выше говорил - лисп устроен по-другому

менять синтаксис - меняют под задачу а не потому что модно или что

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

Спасибо дружище!

Будет очень полезно разобраться с native архитектурой Лисп.
Тем более, что разработка API для работы с объектами на основании метаданных в run-time для меня самая приоритетная задача.

Почему так?

Любой формат данных: графические, СУБД, ... имеют некую архитектуру представления даннных, да и по существу это объекты.
Обычно разработчики создают код «гвоздями прибитый» к метаданным объекта.
Это - «детский сад».

Шутка

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

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

Шутка

http://cl21.org/
https://www.quicklisp.org/beta/
https://common-lisp.net/project/armedbear/
http://franz.com/enterprise_development_tools.lhtml
https://github.com/drmeister/clasp
http://ccl.clozure.com/
http://www.clisp.org/
https://cmucl.org/
http://common-lisp.net/project/ecl/
http://www.lispworks.com/
https://common-lisp.net/project/mkcl/
http://www.sbcl.org/
http://www.scieneer.com/

Вспомнилось.

Идёт мужик по пустыне в маске, в ластах ...
Встречает бедуина и спрашивает:
- Далеко до моря?
- Пятьсот километров
- Ничего себе пляж отгрохали.

Раз Лисп развивают, значит он «живее всех живых».

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

менять синтаксис - меняют под задачу а не потому что модно или что

а разве можно в лиспе менять синтаксис так, чтобы не строилось s-выражение?

типа чтобы получить синтаксис:

if a>b then return 1 else return 2
alysnix ★★★
()
Ответ на: комментарий от lovesan

Синтаксис Lisp для помещения и поиска в hash table на самом деле выглядит так:

’some-symbol

Явная hash table может использоваться как быстрая база данных в памяти.
Как это сделано для «C» https://redis.io/

Если размер контейнера не превышает 20-30 элементов то ALIST всегда быстрее чем hash table.

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

а разве можно в лиспе менять синтаксис так, чтобы не строилось s-выражение?

(if (> a b) 1 2)

В Guile есть reader для infix арифметики:
#!curly-infix
(if {a > b} 1 2)

В Common Lisp возможность реализовать на прикладном уровне, без включения в стандарт как в Scheme SRFI-105.
https://www.gnu.org/software/guile/manual/html_node/SRFI_002d105.html

Стандартный макрос для циклов LOOP построен практически как проза.

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

(if {a > b} 1 2)

это S выражение. я вот и удивлялся, что активно говорят про «смену синтаксиса» с лиспе, но на самом деле, единственным «синаксисом» лиспа является s-выражение, и этот синтаксис поменять нельзя.

получается, все что можно поменять в лиспе, это просто формат самих s-выражений, чтобы они выглядели не столь кучеряво как классические, и то, это еще вопрос.

return обозначает выход из функции, а не значение выражения. так что указанная строка не о том.

то есть бесконечной красоты и минимализма, где все на своем месте

навроде оператора вида

if a>b then return 1 else return 2 end

в лиспе не добьешся.

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

Is Common Lisp sufficiently well-designed? I don’t think so.

В Emacs режиме Scheme есть key binding для вставки λ.

Всё там написанное им реализовано в Common Lisp, бери используй в своём коде. Только этот факт характеризует well-designed.

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

В Emacs режиме Scheme есть key binding для вставки λ.

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

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

я просто хотел заставить написать на лиспе нетривиальное s-выражение, в ветках if, а не просто туда вставить нумера.

типа так

(if (> a b) (return 1) (return 2))

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

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

бесконечной красоты и минимализма, где все на своем месте

if a>b then return 1 else return 2 end

Так ведь (if (> a b) 1 2) короче и шума в нём меньше, разве нет? И так понятно, что выражение закончилось, раз встретилась закрывающая его скобка, без всяких end; и так понятно, что его значение будет возвращено из функции, если оно стоит в ней последним, без всяких return; и так ясно, что после слова if идёт условие, без всяких then.

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

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

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

Ну, тогда те редакторы должны как-то научиться вставлять символы.
Emacs это Lisp Machine, но не Common Lisp. Если скачать исходники «C» и указать путь то из Emacs можно прыгать на любое определение этой машины и в «C» коде. До самых основ.

я просто хотел заставить написать на лиспе нетривиальное s-выражение, в ветках if, а не просто туда вставить нумера.

Чтобы эти ветки были не в виде двух s-выражений? Как тогда обозначить что веток может быть только две?

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

Это называется statement, не оператор. Они могут быть только в определённых грамматикой местах. Невозможно их поместить на месте аргумента в вызове функции.
В Lisp нет statements, только выражения(expression) которые могут быть в любом месте.

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

это все придирки. просто пример был неудачен. пусть будет так

if a>b do a=100 else b=100 end

в лиспе если я не ошибаюсь

(if (> a b) (set a 100) (set b 100))

лисповая запись даже длинней наивной первой конструкции.

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

(if (> a b) (set a 100) (set b 100))

Использовать set в лиспе не хочешь ты, юный падаван.

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

лисповая запись даже длинней наивной первой конструкции.

Физически длинее в пикселах за счёт пробелов. Не логически.

if a > b do a = 100 else b = 100 end

(if (> a b) (set a 100) (set b 100))

ну погуглите - «условные операторы» https://learn.microsoft.com/ru-ru/cpp/c-language/if-statement-c?view=msvc-170

Но я не гуглю «парускаму» в вопросах computer science. Ссылка говорит statement.
Что там происходит в китайской культуре, отдельная сказка. Японцы как самые(или единственные) вестернизованые век провели в адаптации методов западной науки в терминах, и китайцы просто скопировали как смогли. Хотя сама иероглифика в Японии исторически из Китая.

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

вы нечестно расдвинули мою запись. в лиспе пробел - разделитель, и он необходим, в «наивном синтаксисе» он необходим только для разделения в случае если лексема иным способом не отделяется от следующей. a=100 - тут все разделяется и без пробелов.

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

Но я не гуглю «парускаму» в вопросах computer science.

и каким образом парускаму вы хотите называть statement? давайте варианты.

вот еще ссылочка парускаму

https://ru.wikipedia.org/wiki/%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)

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

вы нечестно расдвинули мою запись. в лиспе пробел - разделитель, и он необходим, в «наивном синтаксисе» он необходим только для разделения в случае если лексема иным способом не отделяется от следующей. a=100 - тут все разделяется и без пробелов.

В Lisp длинее если измерять в пикселах. Не логически.

и каким образом парускаму вы хотите называть statement? давайте варианты.

Google переводит десятком слов. Есть заявление и изложение.
На украинский есть перевод «виказ»(читается выказ), «виклад»(выклад).
Как обычно исторически это заимствовать, или из западноевропейского или украинского. Стейтмент или выказ, выклад.

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

На украинский есть перевод «виказ»(читается выказ).

учите русский. тут русскоязычный сайт. что там на украинском, иврите или узбекском вообще никому не интересно.

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

учите русский. тут русскоязычный сайт. что там на украинском, иврите или узбекском вообще никому не интересно.

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

Не знал что даже это не определено в русском. Как будто советская училка по информатике диктует в конспект то что ей самой малоизвестно.

Statement из терминологии парсинга языков. Grammar. Lexer(или Scanner). «Инструкция» не то потому что для парсера это не инструкция, а лингвистическая конструкция описанная грамматикой языка.
И это при том что языки швейцарца Wirth потому и выглядят так что он руководствуется эффективностью парсера с максимально быстрой компиляцией в один проход.

Но это не страшно. Можно оператор. Только понимать разные значения. В таком значении, в Lisp нет операторов. Нет связанных с ними ограничений.

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

русскоязычная терминология в IT сложилась задолго до того, как ваша родина получила независмость, а еще в 50-60 годах прошлого века. и оттого, что вы там перевели statement впрямую, для пополнения небогатого тезауруса ридной мовы, никак не изменилось то, что statement в русском называется традиционно - оператор.

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

В таком значении, в Lisp нет операторов. Нет связанных с ними ограничений.

в лисп нет операторов. там S-expressions, переводимые ну русский как S выражения.

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

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

у швейцарца вирта в грамматиках были

statement - оператор

expression - выражение, например арифметическое

operation - операция, типа + - / OR XOR и так далее

designator - адресное выражение для доступа к переменной например. a[i].field[i]^

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

в лиспе пробел - разделитель, и он необходим, в «наивном синтаксисе» он необходим только для разделения в случае если лексема иным способом не отделяется от следующей. a=100 - тут все разделяется и без пробелов.

Длина в пикселах.
И какой вывод из этого? В пользу чего?
«Мораль цієй баснi». (сией, этой)

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

у швейцарца вирта в грамматиках были statement - оператор

Значит begin…end это оператор, return оператор.

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

statement - оператор

Мне просто интересно стало - откуда «дровишки»? Мне и в страшном сне бы не приснилось statement оператором назвать…

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

русскоязычная терминология в IT сложилась

Сложилась, ага. Еще до изобретения ЭВМ. Гаджет, виджет, плагин, зело браузер люли-люли гой еси. Лаунчер, ой то есть лончер, то есть нет, все-таки лаунчер ггг.

thesis ★★★★★
()

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

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

а разве можно в лиспе менять синтаксис так, чтобы не строилось s-выражение?

Всмысле чтобы «не строилось»? У тебя под капотом все-равно будет AST в том или ином виде, в любом языке(ну, в CL будет сначала списки и символы, а потом flow graph обычно).

Синтаксис можно на любой поменять воще.

http://l1sp.org/cl/set-macro-character

Более того, сам «дефолтный» синтаксис CL именно так и реализован - через вот эти macro characters.

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

Мне просто интересно стало - откуда «дровишки»? Мне и в страшном сне бы не приснилось statement оператором назвать…

гуглим - «операторы программирование», в русском IT statement устойчиво переводится как оператор, еще со времен первых языков.

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

У тебя под капотом все-равно будет AST в том или ином виде, в любом языке

Чаще большое Concrete Syntax Tree которое нужно сократить до AST вручную, автоматические алгоритмы почти неприменимы.
Ошибки форматируются с CST где полная информация о позициях в коде.
Провести анализ типов, полиморфизм. Вставить скрытые служебные блоки кода.
AST можно передавать простому пред-ассемблеру на основе шаблонов мнемоник.

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

гуглим - «операторы программирование», в русском IT statement устойчиво переводится как оператор, еще со времен первых языков.

«это команда, обозначающая определенное математическое или логическое действие, выполняемое с данными (операндами)»

В журналах СССР конца 80-х имеющих отношение к компьютерам не существовало даже мнемоник ассемблера. Статьи состоящие из короткого описания и страницы полностью с кодом в шестнадцатеричном виде, 0-9ABCDEF.

tp_for_my_bunghole
()
Ограничение на отправку комментариев: