Pull to refresh
332
Maxim Mozgovoy@rg_software

university professor and software developer

0,2
Rating
155
Subscribers
Send message

Как это сделать объективно?

Ну для начала надо решить, с чем сравнивать, а потом уже определимся как. То есть прыгаем в условный 1995 год и смотрим, что у нас есть, например, для разработки банального GUI архиватора, чтобы работал под Wintel, Mac (PowerPC), а версия командной строки ещё и на UNIX-like сервере. Как-то не помню, чтобы в этом контексте обсуждался Fortran. Вот C -- да, конечно, с точки зрения совместимости и кроссплатформенности на голову надёжнее C++.

Почему? Один пишет опердни в ретейлере, другой — для веба, третий — компиляторы, четвёртый — вообще криптобро.

Ну это всё условно железо типа "серверный бэкэнд". Давайте так, у одного мобильная игра, у другого PlayStation, у третьего GUI desktop app по типу MS Office, у четвёртого Ардуино. Система может быть realtime, с чёткими таймингами, например. Покажите хотя бы одну игру на Хаскеле.

Вы осознаёте, что вас тезис становится всё менее проверяемым в лучшем случае, а в худшем — всё более невалидным?

Мой тезис -- язык C++ обратно совместим и кросс-платформен (вот это не упомянуто раньше, но не менее важно). Просто я использую это в относительном смысле: обратно совместим не по сравнению с идеалом, а по сравнению с конкурентами. И тезис этот идеально проверяем: мы можем обсудить конкурентов (особенно на момент взлёта популярности C++, т.е. где-нибудь начало 90-х).

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

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

уж поверьте человеку, потратившему пару календарных месяцев на портирование кода с gcc 6 на gcc 8),

Да я верю, но вы сравниваете с гипотетическим идеалом, а по факту, например, хоть какая-то совместимость C++ со старым C являлась одним из важных факторов его популярности, ведь так же. Мы же берём лучшее из имеющегося, а не то, чего хотим в теории.

А где тут собор, а где — базар? Потому что в случае плюсов все эти пропозалы проходят через весьма централизованный комитет 

Ну, исходная метафора Рэймонда тоже хромает, так что чего придираться к словам. Но если угодно, сообщество Хаскела -- это "прихожане", которые строят "собор", имея некое общее представление. А сообщество C++ -- это "базар" из разнородных участников, и наличие "дирекции" на базаре не делает его собором.

Ну да, для не-нишевости нам не хватает… чего? UB из всех щелей, наверное.

Ну это же не ко мне вопрос, чего Хаскелу не хватает. Я всего лишь ссылаюсь на некую наблюдаемую реальность.

Насколько несовместимы были между собой разные версии C до 89-го?

По правде говоря, не знаю. Между первым изданием K&R и стандартом ANSI прошло 10 лет. Мы видим крайние точки -- в них языки уже достаточно сильно расходятся (сам язык C, впрочем, небольшой), а что за "релизы" были в промежутке, сказать не могу.

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

Критика принимается. Но всё же стоит отметить, что весь этот вал изменений в C++ -- это не плод личного желания Страуструпа или узкого круга ценителей, а тонны разнородных proposal'ов с самых разных концов индустрии. Собор vs базар, короче говоря.

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

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

Сами восточные идеи, безусловно, интересны, но как вы справедливо заметили, Рассел в своей книге упомянул только Будду, и в ней же он объясняет, что слово "философия" к мистическо-религиозным учениям слабо применимо.

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

Честно говоря, не думаю, что найдут. В эпоху железного занавеса были совершенно точечные обмены, в основном в области математики и теоретической физики. Всё остальное -- мимо; когда это стало известно широкой публике, было уже поздно. Да взять нашу любимую computer science: куча вещей параллельно придумывалась у нас, и на западе, а там нас не читали, и в итоге выдающиеся люди не получали мирового признания. Если ты сегодня не публикуешься в Nature, завтра с теми же результатами туда придет другой, и все будут цитировать его статью.

Так трагедия в том, что сейчас никто не захочет сотрудничать с РАН независимо от того, богослов там или реально крутой учёный. В этих обстоятельствах быть богословом куда полезнее для печени.

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

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

 поэтому говорить о какой-либо обратной совместимости языка до более-менее появления соответствующих хоть какому-то единому стандарту (будь то хоть святые писания Страуструпа) реализаций нельзя, потому что обратной совместимости не бывает без простой совместимости, а её не было

Я вполне понимаю эту логику, но мне кажется, что с такой меркой подходить к реальному миру просто непродуктивно. Первый стандарт языка С -- это ANSI 1989, и если мы реально будем отсчитывать историю C от 1989 года, то на чём же тогда UNIX написан был? Да, костыльность старого кода C++ очевидна, но тем не менее, тут вопрос с чем мы сравниваем -- с гипотетическим идеалом или с реальными production-level языками того же времени и ниши.

Мой любимый язык — хаскель, ему 30 лет, первый стандарт вышел в том же 98-м.

Страуструп на эту тему высказался: языки делятся на те, которые все ругают, и на которых никто не пишет. Это ни в коем случае не в пику Хаскеля, но надо понимать, что он живёт в условиях "ниже радара" широкой публики, а это совсем не та модель бытования, которую обсуждают в рамках разговора "чего бы такого изучить, чтобы через 30 лет оставалось актуально". Мне, положим, FORTH нравится, он сразу вышел хорошо, там и менять ничего не нужно.

 до него два единственных стандарта — C++98/03 и C++11. 

Дело не в формальном стандарте, у Питона вообще нет "стандарта", была некая ad hoc реализация автора, и это и был "стандарт", и ничего. "Стандарт" C++ описывался в книге Страуструпа The C++ Programming Language, и по ней и определялось, что в языке, а что нет. И по изданиям видно, что эволюция языка до C++11 была достаточно скромной, а расширение шло в основном за счёт стандартной библиотеки. Соответственно, если язык фактически в ходу с середины 80-х, оттуда и отсчитываем.

Не уверен, что это хорошо.

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

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

В этом смысле любой язык старше 10-15 лет показывает свой тип накапливания энтропии. Java и C# аккумулируют новые средства как не в себя, причём C# ещё и вводит кучу новых ключевых слов и конструкций просто ради syntactic surgar по велению левой пятки. Везде появляются и типизированные контейнеры, и лямбды, и асинхронные операции, и чёрт ещё знает что. Для Java бонусом идёт зоопарк систем сборки и графические библиотеки (AWT/Swing/JavaFX/etc.) Python плюёт на обратную совместимость, из-за чего приходится держать на машине все версии, начиная, наверно, с 3.6 (а ещё 2.7 впридачу).

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

А вообще... кто нас спрашивает-то? Вот решил Джобс, что на iPhone все будут писать на Objective-C. И всё, как миленькие бросились писать на Objective-C. Потом объявили переход на Swift, и не стало никакого Objective-C. Сик транзит, как говорится.

Как говорилось в одном классическом тексте,

Let’s be very, very clear about one thing: .NET will eliminate DLL Hell. 

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

Вы говорите, что 3D принтеры развились благодаря открытости. Я не знаю, так ли оно, но допустим, почему бы и нет. В предыдущей реплике я лишь привёл пример технологий, которым закрытость никак не помешала. Почему производители mp3 плейеров не считали ниже своего достоинства платить отчисления, а производители принтеров почему-то считали -- понятия не имею. Ну и заметим в скобках, что мы не знаем, стали бы 3D печать в принципе изобретать в мире без патентов. Может, и стали бы, но не проверишь же

Ну эти люди должны поверить в том, что на их работу есть спрос. А может, его нет, а точнее, я один такой. Ну и вообще рассмотрите такой вариант, что мне неинтересно покупать что-то там отреверсенное в подвале, а не просто заплатить за патент изобретателю и ещё и (возможно) получить саппорт и всё такое. А про IBM PC -- это называется cherry picking, выборка по одной точке. Расскажите ещё историю загнувшегося iPhone или mp3.

Аргументы понятны, но посмотрите на это с другой стороны. Патентные отчисления -- это всего лишь деньги. Заплати и лети. Простой пример -- eInk читалки: любой желающий платил за технологию и использовал сколько влезет. Аналогично с форматом mp3. "Реверсить" же можно пять лет, а можно и двадцать (в зависимости от сложности технологии), и неизвестно ещё, что задержит развитие дольше. Кроме того, это опять всё в пользу больших корпораций. Если я хочу сделать свою eInk читалку, сейчас это вопрос патента и одноплатника уровня raspbery pi. Если же надо реверс-инженерить производство eInk экранов, то никаких шансов.

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

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

Я в целом согласен с вашим посылом, но обсуждать, как мне кажется, можно количественные показатели (условный процент ремейков в свежих релизах), но не качественные. Принципиально всё уже было так и в 80-х и в 90-х: успешный "полный метр" типа Конана Варвара или Винни-Пуха моментально кочевал в формат телевизионного сериала с тем или иным уровнем качества. Компьютерная игра типа "Терминатор" или "Робокоп" обычно являлась generic платформером со стрельбой и прыжками, отличавшаяся только спрайтами героев и врагов. А насчёт "повесточки" и "усреднённости" можно вспомнить диснеевскую продукцию эпохи застоя (условно, 70-80-е), когда все сюжеты крутились вокруг стоковых взаимодействий стоковых персонажей.

Другое дело, что запуская сейчас игру Robocop 2, выпущенную в 1990-м году, я более-менее представляю себе, чего ожидать. А коллективные "мы" почему-то надеемся на что-то иное от очередной части "Звёздных войн". Можно предложить массу гипотез о причинах, почему так, и идея "научно-нейросетевого" подхода вполне годится для этого списка, но концептуально стратегия для зрителя ровно та же, что и всегда: сиквел/приквел/брэнд в названии -- это обычно попытка просто срубить бабла, так что keep your expectations low.

Information

Rating
3,002-nd
Location
Фукусима, Япония
Date of birth
Registered
Activity