Здравствуйте, so5team, Вы писали:
Pzz>>Нет. Культурный контекст.
S>ХЗ что под этим подразумевается, т.к. тот же UNIX за прошедшее время сильно эволюционировал.
Культурный контекст — это та среда, это та среда, в которой происходит коммуникация и взаимодействие между людьми, и которая определяет их ценности, убеждения и нормы.
Это определение не я придумал, а гуглёвый поисковик. Но я с ним согласен.
S>Это как ссылаться на Вирта рассуждая о современном FreePascal или Delphi.
Мне трудно рассуждать о Паскале и его производных, а с ними мало знаком.
Pzz>>>>С учётом всего этого, Go — это такой C 2.0, прямое продолжение цепочки C -> Alef/Limbo -> Go. Созданный с учётом всего этого опыта и со многими исправленными ошибками Си.
S>>>Вы так говорите, как будто это что-то хорошее.
Повторюсь относительно бессмысленности оценочных суждений.
S>Либо потому, что они специально делали язык, в которых собственные каналы с гороутинами фиг напишешь.
Почему не напишешь? Гошный рантайм написан на Go, с незначительными ассемблерными вставками. Не будет красивого синтаксиса в виде ключевого слова
go и операторов
<- и
->, а в остальном всё будет.
Кроме того, оператор
for ... range уже умеет итерировать не только встроенные типы, но и пользовательские типы, которые реализуют соответствующий интерфейс. Не удивлюсь, если и с каналами так когда-то будет ("всё есть канал, если реализует интерфейс канала").
S>Представляете, да. Нетривиальный потому и нетривиальный. См. определение "нетривиальный" в толковом словаре.
S>В качестве некоторого далекого приближения можно было бы написать что-то вроде: код (или проект) сложность которого находится либо на самой грани технических возможностей существующих инструментов либо вообще за их гранью.
Я боюсь, у нас разное представление о нетривиальности.
Скажем, на мой взгляд, алгоритм построения ДКА из регулярного выражения нетривиален. Хотя, безусловно, может быть реализован на любом вменяемом языке программирования.
S>Но это неважное определение к которому можно доколупываться, поэтому я избегаю прямого ответа.
S>А примеры вполне себе нормальные.
Я не пытаюсь доколупываться. Но хорошо бы иметь общую терминологию, а не догадываться, что имеет ввиду оппонент.
Pzz>>Говорят, гошный библиотечный http-сервер по производительности сравним с nginx. При этом nginx очень гордится своей производительностью. А гошный библиотечный сервер написан довольно-таки в лоб (и мог бы быть существенно ускорен за счёт уменьшения числа аллокаций, приходящихся на запрос, но ценой усложнения API).
Pzz>>Это к вопросу о производительности...
S>Только вот гошный библиотечный http-сервер по своему функционалу далеко не nginx.
Речь шла о производительности.
Библиотечный http-сервер по своему функционалу очень хорош. Просто он не является коробочным продуктом, а является полезной запчастью, которую можно к чему-нибудь приделать.
Причём Go очень гибок в плане приделывания запчастей друг к другу. Поскольку библиотечный http-сервер оперирует на TCP-сокетами, а интерфейсами
net.Conn и
net.Listener, его можно приделать к тому, что и сетью-то не является. Например к USB.
Или, например, любая библиотечная функция, которая умеет читать из файла, с таким же успеком будет читать из тела HTTP-ответа, причём без промежуточной буферизации, потоком. Практически напрямую из сокета, если ответ никак не закодирован, или через gunzip и chinked decoder, если формат ответа подозревает это. Прозрачно для себя и автоматически.
S>Вы опять говорите вещи, на которые только и остается, что сказать: очередная дурость.
Повторюсь: сам дурак.
S>PS. На счет говнокода и Go. Случайный файлик из списка проектов на который вы сослались. Функция на 200 строк из которых изрядный процент как раз if-ы с return err. Красота.
Такой код совсем немного сложнее писать, но зато значительно проще читать и отлаживать, поскольку всё эксплицитно.