All streams
Search
Write a publication
Pull to refresh
82
0
Евгений Охотников @eao197

Велосипедостроитель, программист-камикадзе

Send message

Опечатался: "А clang-format таковой библиотекой не нуждается является."

Почитал всю ветку и так вас и не понял.

Во-первых, не удивительно.
Во-вторых, выяснилось, что не осознаете.

Что такое теплое и мягкое?

Это попытка сравнивать вещи из разных категорий.
Например, когда сравнивают Java и emacs или C# и vim.
Наверное, по каким-то критериям (типа размера дистрибутива или величины порога входа) их можно сравнивать, но его адекватность будет под большим сомнением.

Вы пытаетесь что-то сказать, но не можете

Аминь.

Не томите, здесь все свои.

Тут бы следовало подставить известную цитату из "Брата 1".

Сможете объяснить в чем неадекватность и какой контекст разговора. На всякий случай, для контекста "vcpkg install что-угодно".

Для людей, которые знакомы с vcpkg выражение "vcpkg install что-угодно" означает установку библиотек из репозитория vcpkg. Не более того. Вы же в своей статье писали про то, что вам для проекта нужен nlohman_json. Вот nlohman_json попадает в скоуп vcpkg, а bash -- нет.

Это то же самое, как пенять Nix-у, что через него нельзя под Windows установить Visual Studio.

В чем неадекватность?

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

Как vcpkg решает проблему работы clang-format который мне нужен для ежедневной разработки на С++?

А он их и не решает. Он подтягивает библиотеки, которые нужны для компиляции и линковки вашего С++ного проекта. А clang-format таковой библиотекой не нуждается.

Лучше проверять, прежде чем писать. А то может случиться конфуз:
На crates.io живет множество не-Rust проектов. Вы спрашивали про Qt? https://github.com/KDAB/cxx-qt/

Ну и где там нужный вам nlohman_json? Что ж вы, если вам нужно писать на C++ и вам так нравится cargo, не пользуетсь cargo для управления зависимостями?

То, что менеджерам зависимостей для других языков приходится таскать наработки из мира C и C++ не удивительно. Если на условном Rust-е все никак не могут написать свой Qt, то остается только паразитировать на уже готовом Qt и делать так, чтобы менеджер зависимостей мог этот Qt подтянуть к проекту на условном Rust-е (или Python-е).

А вот в мире С и С++ пока насрать на то, что делается на условном Rust-е, т.к. влияние этого пока что ничтожно.

nix и vcpkgs - это пакетные менеджеры. Мне как разработчику нужно от них одно: установка зависимостей проекта.

Вот как раз из-за того, что вы причисляете vcpkg в категорию "пакетного менеджера" (да еще наделяя термин "пакетный менеджер" смыслом из Unix-ного мира) и возникает проблема. vcpkg не является таковым в том смысле, который вам нужен.

И, что характерно, таковым он и не задумывался. По крайней мере, пока.

Кстати, называется vcpkg именно как vcpkg, а не vcpkgs. Так что вы и здесь демонстрируете незнание материала.

Давно уже не бывает "только C++".

Да что вы говорите... А мужики-то и не знают.

Опять вы ошиблись, написав "Непонятно осознаете ли вы, что сравниваете теплое с мягким." к моему "Я даже make и cmake не нашел в репозитории."

Я не ошибся.

Не знаете что vcpkg умеет приносить CMake?

Знаю. Под Windows, например, он может и Perl, и MSYS2 с bash-ем поставить. Но только для своих нужд, чтобы собрать из исходников библиотеку, которая вам потребовалась. Пользователю нет доступа к этим инструментам. Т.е. для пользователя он CMake "приносить" таки не умеет.

Кстати говоря, если работать с vcpkg в режиме манифеста и через CMake-овский TOOLCHAIN-файл, то никакие PATH вручную модифицировать не нужно.

Ну то есть просто увидели слово "vcpkg" и сразу приняли сторону.

Я не принимал сторону, а увидел, что в какой-то момент пошли:

a) неадекватные сравнения. Пример с vcpkg install bash неадекватен в контексте разговора про vcpkg. Он для таких вещей не предназначался;
b) неадекватные требования к vcpkg: vcpkg решает проблемы только C++ (как cargo решает проблемы только Rust-а, а npm -- только JS). Поэтому странно, что сперва в статье cargo упоминают как образец, а потом в комментариях к vcpkg предъявляют требования, которым тот же упомянутый как образец в статье cargo этим требованиям не соответствует.

И тут уж мне показалось, что в этих наших Интернетиках кто-то сильно не прав.

А я про это и говорю.

Простите, что вы говорите? Я в этой ветке обсуждения увидел сравнения только от автора статьи и сравнения эти, скажем так, весьма странные, мягко говоря. Эти сравнения и прокомментировал. И тут вы мне такой "начать вы решили с автора статьи"... Конечно, раз сравнения озвучивать начал автор статьи, то с кого же мне начинать?

Наверное действительно плохо видите поскольку это не так - https://habr.com/ru/articles/953676/comments/#comment_28922634.

Вот этот комментарий полностью:

vcpkg install что-угодно, господи. Хватит придумывать велосипеды из костылей.

Я здесь в упор не вижу утверждений, что vcpkg что-то может, а nix чего-то не может. Или наоборот.

И хотя я не согласен с тов.@Starl1ght, его комментарий я понимаю. Мол, если нужны зависимости для C++ного проекта, то подтянуть их через vcpkg может быть удобнее, чем через nix. Но когда на такое замечание (пусть даже и крайне спорное) отвечают тем, что vcpkg не может установить bash в систему, то это выглядит очень и очень странно. Что, собственно, и вызвало мой комментарий.

Вы хотите продолжить в своем духе или узбагоитесь уже?

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

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

То есть nix с vcpkgs можно сравнивать и это нормально

Я где-то такое говорил?

Повторю еще раз: nix и vcpkg -- это инструменты разных калибров, предназначенные для разных задач. Поэтому сранивать их (хоть nix с vcpkg, хоть vcpkg с nix) так себе идея. Отсюда и "теплое с мягким".

И когда автор статьи в комментарии говорит о том, что он не может сделать vcpkg install bash, то это свидетельствует о том, что он вообще не понимает что такое vcpkg, зачем он нужен и как используется. Посему такие сравнения с такими примерами выглядят как жалобы на неудобство закручивания гвоздей крестовой отверткой.

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

Например, очень странная претензия в комментарии:

cargo, npm итд в vcpkgs тоже нет, использовать Rust, JS, TS, Python и другие языки без костылей не получится.

Интересно, а в cargo есть Boost или Qt, или тот же npm? Получится ли при разработке на Rust использовать JS, TS и Python без костылей?

Я даже make и cmake не нашел в репозитории. Что с компиляторами тоже непонятно.

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

А я должен был знать все что Вы знаете чтобы знать что есть ООП и что есть не совсем ООП? По-моему это слишком. Перебор.

Заявления о "настоящести ООП" без наличия хоть сколько-нибудь существенной эрудиции в данном вопросе превращают вас в клоуна. В лучшем случае.

Это не прочиталось? Не понялось?

Это ерунда, а не попытка доказать то, что "ООП -- это теория". В области программирования достаточно много реально научных теорий, например, теория алгоритмов. Еще можно вспомнить про формальную верификацию. Которые к теореме Пифагора по своей доказательной силе гораздо ближе, чем ваши рассуждения.

Не надо себя распалять в воображении о числах.

Так это же вы заявляете о том, что x86 не может быть нормальным сервером. Только вот когда заходит речь о реально больших числах, например, о том, как Google обслуживает свой поиск или свой Gmail, так выясняется, что там x86-е в немерянных количествах. А не МФ от IBM.

Проблема в том, мил человек, что полноценно загрузить тысячи независимых х86-64 серверов гораздо сложнее чем один МФ.

Тысячи серверов загружают те, кто знает, умеет и имеет актуальную в этом необходимость. Например, Google, Amazon, Netflix, Microsoft, Yandex и т.д.

Кому это не нужно, берут то, что нужно под задачу.

Вы удивитесь, но и я так не считаю.

Удивлюсь. Ибо: "Настоящим ООП языком был и остается только ST." -- это точная ваша цитата.

Просто я знаю хорошо SmallTalk и ничего про другие. Поэтому и ссылаюсь на него. Это плохо?

Да.

Что там у Вас в активе?

Из языков программирования? Из того, что использовалось для работы: C, C++, Java, D, Ruby. Из прочего, что выходило за рамки обычных HelloWorld-ов: Pascal, VB for Application, Eiffel, Python. Плюс еще полдюжины языков, на которых дальше HelloWorld-ов не пошло за ненадобностью или потому, что привкус не понравился: Modula-2, Ada, Scala, OCaml, Go, Rust, JavaScript, Erlang, Lua и всякая никому не известная экзотика, вроде Pike или Nice.

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

Это заявление из категории "ничто не может двигаться быстрее света". Только вот свету и не нужно двигаться быстрее, он и так движется с максимальной скоростью. Нативные ОО-языки (вроде C++, Eiffel, D, Ada 95) и так компилируются непосредственно в нативный код. В отличии от динамических SmallTalk-ов с Ruby, в которых JIT может сработать, а может и нет.

Я ничего не знаю ни про один из перечисленных.

Но мнение о том, что "настоящий ООП только в SmallTalk" имеете. Поэтому чем дальше, тем большим клоуном выглядите.

Но здесь нет Java и .NET.

Вы просили те, что компилируются в нативный код. Java транслируется в байт-код и не обязательно этот байт-код будет JIT-ится. А .NET -- это и не язык программирования вообще, это платформа.

Вы этого не можете знать, поэтому Вы наговариваете

Так поделитесь: что такого производительного вы делали на SmallTalk и во сколько раз обгоняли на бенчмарках аналоги на нативных языках, типа C++.

Интересно почему?

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

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

Это вы просто Eiffel-я не знаете. И Java. Чистые ОО-языки, между прочим.
А в Eiffel еще крутая поддержка множественного наследования, которого в SmallTalk нет в принципе. Наверное, покруче, чем в C++.

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

Уже пояснил.

Нет.

Не совместимы в том смысле что нет единого подхода к программированию.

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

Ок. Может. Та ERP система которую я сопровождал 25 лет будучи перенесена в облако стоит на отдельном серваке х86-64 с кучей коров (ударение на первое "о") и памяти.

Какие-нибудь количественные показатели у этой ERP есть? Ну там объем данных дохилиард терабайт, пропускная способность десятки миллионов RPS, поддержка одновременной работы трех миллиародов юзверей с пяти контенентов?

Горизонтальная масштабируемость это единственный метод на х86-64 чтобы ранить (от слова "run") сколько-нибудь объемную работу.

Именно. Для вертикального масштабирования есть ваши любимые МФ. Когда МФ обсераются на объемах, приходят десятки тысяч x86-х и все дела. Хотя, не удивлюсь, если в течении 5-10 лет эти самые десятки тысяч x86-х сменят сотни тысяч ARM-ов.

Выше в этих комментариях где приводились цитаты, найденные в Гугл, например.

Цитаты из гугла -- это почти как надписи на заборе.

Тем кто знает о чем речь.

Это какое-то скаральное знание?

Кто знает процедурные языки, чистый ООП язык SmallTalk, и смеси этих двух парадигм программирования.

Я вот тоже знаю много страшных слов. Но не считаю что настоящий ООП только в SmallTalk. И? Кто меня опровергнет?

Не понимаю почему меня это должно было смущать.

Оно и заметно.

Немного Visual Basic. 90% из 40 лет я вообще работал на позициях не связанных с программированием прикладных программ.

Все чудесатее и чудесатее. Было сильное подозрение, что вы кроме SmallTalk-а ничего и не пробовали. Отсюда и такой пиетет.

А тут еще и выясняется, что вас и программистом то назвать можно с натяжкой.

Что Вы имеете в виду?

Что синтаксис там Паскале-подобный, а не вот это вот ifTrue и ifElse.

Нет никакой такой природы по которой код настоящих ООП языков не может быть достаточно быстрым.

Нет, поэтому C++ и Eiffel и не тормозят. А SmallTalk и Ruby динамичекие, у них тормоза в ДНК.

Много ли Вы знаете современных языков в ходу у программистов которые не имеют виртуальную машину для байт-кода?

Давайте подсчитаем: С, С++, Go, Rust, Swift + Objective-C, ObjectPascal, Ada. Можно для экзотики еще и Haskell с OCaml-ом добавить. Ну и Eiffel, раз уж экзотику в теме про ООП упомянули.

но читый ООП это далко не про производительность и соревнования по скорости.

Повторюсь: С++ и Eiffel прекрасно себя чувствуют в области производительности. А то, что вы со своим SmallTalk-ом никогда производительный код и не писали, так это не проблема ООП ни разу.

Да я писал всего и пишу мои программы в одиночку.

И почему я не удивлен?

И как Вы могли видеть выше SmallTalk был признан как "чистый" т.е. правильный вариант имплементации ООП

Где я это мог видеть?

Кем он был "признан"? Что, где-то есть какой-то ISO или ANSI или ГОСТ стандарт на ООП, в котором приписано, что стандартной реализацией ООП является SmallTalk?

Вас не смущает, что ООП вообще и первый ОО-язык програмирования появились задолго до SmallTalk-80?

Надеюсь, вы не сольетесь в очередной раз и не разразитесь очередной порцией нелепостей, а ответите на поставленные вопросы.

Заодно, чтобы два раза не вставать: какими еще ОО-языками, кроме SmallTalk-а, вы пользовались?

Пока это плохо ( не совем но все же) получается.

Я даже могу подсказать почему.

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

  • настоящий ООП только в SmallTalk;

  • ООП -- это такая же теория, как и теорема Пифагора;

  • ООП и компактный нативный код не совместимы;

  • x86-64 сервак даже базу данных не потянет.

В случае Смоллтолка не нащупали, его парадигма "вообще всё объекты и их методы, а общаемся мы сообщениями" (откуда же и название пошло) так же полезна при разработке, как поддержка 65535 мышей в ОС

Справедливости ради: в Ruby реализован тот самый ООП из SmallTalk, только в нормальном синтаксисе и исходники лежат в обычных файлах, а не в образах виртуальных машин, как это было в SmallTalk-овских средах.

Этот самый ООП с паре с синтаксисом Ruby дает удобные инструменты для реализации eDSL. Чем, собственно, Ruby и хорош (и за счет чего получился Ruby-On-Rails, а за счет RoR свою долю хайпа получил и Ruby).

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

Так что я бы не сказал, что идеи SmallTalk-а умерли. Они трансформировались. Но с быстрым кодом, имхо, они не совместимы в принципе. Просто по своей природе. А автор статьи, как я понимаю, SmallTalk для формошлепства использовал, да еще и в режиме "в одно лицо, без коллег". В таких условиях ни скорость исполнения, ни ресурсоемкость, ни удобство коллективной работы в расчет можно и не брать.

Отвечу кратко. ООП это теория. Типа теоремы Пифагора.

Теорема Пифагора имеет математически выверенное доказательство.

Можете предъявить что-то подобное для "ООП"?

Мне что за Вас погуглить "OOP Delphi vs. SmallTalk"

Вы бы лучше объяснили читателям зачем вообще сравнивать ООП в разных языках?

Ну вот в ObjectPascal ООП реализовано одним способом.
А в SmallTalk другим.

И что?

Вы будете делать выбор между ObjectPascal и SmallTalk на основании различий в их ООП? Реально?

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

Во-вторых, Хабр не тот ресурс где принято называть вещи своими именами. Самое мягкое, что я могу сделать -- это назвать глупость глупостью. Но и это, скорее всего, вызовет поток минусов в карму.

1
23 ...

Information

Rating
6,332-nd
Location
Гомель, Гомельская обл., Беларусь
Registered
Activity