Pull to refresh
149
0
Дмитрий Завалишин @dzavalishin

Архитектор

Send message

- Как Вам нравится наше определение рака? Рак - это красная рыба, которая ходит хвостом вперёд.

- Всё хорошо, только рак не рыба, он не красный и не ходит хвостом вперёд.

У вас там в скиллбоксе все обладают такой же глубиной знания предмета?

  • Джава не медленная. Компилятор Java - один из топовых по качеству оптимизации и сравним с Си. Собственно, Си, Си шарп и Ява - тройка самых эффективных по качеству кода языков. И да, Ява в определённых условиях может обходить Си по быстродействию.

  • Надо быть девочкой из бухгалтерии или (плохим) копирайтером, что бы написать, что явский код более громоздок, чем код на Си. Ситуация ровно обратная. Код на Яве катастрофически более читаем.

  • Про "платить" уже написали. Это позор даже для копирайтера. Как можно писать статью про яву и не знать про опенсорсную версию - ума не приложу.

  • Это не инструкция по написанию hello world, это инструкция по созданию минимального скелета высоконагруженного кластеризуемого серверного приложения. Hello world занимает 5 строк кода.

Ну и отдельно восхищает опрос. "Опрос, проведённый в Интернете показал, что 100% жителей страны пользуются Интернетом."

В общем, кол отделу маркетинга. Соорудили позорище с целью порекламироваться.

Go - очень компактный, красивый, удобный... устаревший на 40 лет язык. По уровню развития ЯЗЫКА он стоит на том же месте, что и Си. Что неудивительно - его делали ровно те же люди ровно того же возраста. Сегодня он выглядит как идеально сделанная из шикарных материалов очень красивая, удобная и аккуратная карета в ряду звездолётов.

Отсутствие ООП и исключений это кабздец. Я прям вспомнил молодость, втыкая в каждую вторую строку val, err = func; if( err != nil ) return err;

Ну и да - писать на нём - это убивать в себе объектное мышление. Это не сильно мешает написать код, но сильно мешает его поддерживать, так как вместо ООП в коде на Go будет куча лишних вызовов подпрограмм для симуляции наследования или, что скорее всего - куча скопированного кода. Исправление ошибок превратится в ад.

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

Насчёт скорости: все реально взрослые тесты что я нашёл показывают, что он сливает и си, и яве. Увы.

С вероятностью 99% там проигрывает не Java а запуск виртуальной машины и прогрев JIT компилятора. Это такой вид самообмана. Статически скомпилированный код запускается мгновенно, а JIT требует времени на прогон компилятора в рантайме. Честное сравнение предполагает, что гоняем код типа 10000 раз и замеряем время исполнения второй половины.

А есть публичные бенчмарки, которые это подтверждают? А то всё, что я видел показывает обратную картину - ява опережает по производительности. Ну и логика подсказывает, что так и должно быть: кодогенератор и GC у неё давно вылизаны до блеска, а где ещё можно обойти - непонятно. Ну и да, статическая компиляция это минус, а не плюс - при генерации кода JIT-ом у нас есть готовый профайл исполнения, который помогает компилятору правильно генерить код.

  1. Я пишу на Си с 1985 года. Скорее всего, большинство участников дискуссии родились позже, чем я первый раз запустил cc.

  2. Я написал на си более пары миллионов строк. Я писал на нём всё. Вообще всё. Ядро ОС, Яндекс Маркет (да, первая версия написана на чистом си в одно лицо), графику и СУБД, компиляторы и интерпретаторы, картографию и прикладной десктопный софт.

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

  4. НИ-блядь-КОГДА, НИКОГДА и НИ ПРИ КАКИХ УСЛОВИЯХ кроме приставленного к голове ствола НЕ ПИШИТЕ НА СИ. Единственное исключение - это когда у вас ардуино и памяти два килобайта. Но это и есть приставленный к голове ствол.

  5. Прикладной код переписывается с Си на Яву (да, на Яву - это самый близкий к си нормальный язык) со скоростью 300 тысяч строк в месяц. Миллион строк можно перегнать с Си на Яву за квартал. Пробовал.

  6. После этого у Вас исчезнет: А) херовая переносимость. Код на Си ПЛОХО переносим. Напомню - я пишу на нём почти 40 лет и помню, когда Си стал первым переносимым языком. Так вот - 40 лет таки прошло и он стал худшим по переносимости из всего, что есть на свете. Б) война с типами (какого размера у нас int?) В) война с инклудами (втащил библиотеку, она втащила инклуды, и они с твоими несовместимы) В) этот КАБЗДЕЦ с ручной аллокацией памяти, который вынуждает программера строить угробищные конструкции из структур данных потому что всё время надо думать, кто и как это будет освобождать. А не как это ДОЛЖНО быть устроено по уму. Г) вот эти лютые дыры в работе с памятью, которых в си не может избежать никто. Никто, блин. Д) Появится шикарный малтитрединг с широченной поддержкой в библиотеках и фреймворках. Е) Фантастическое количество библиотек, фреймворков и готового кода. Да, сильно больше, чем на Си. Если иметь в виду реально работающий, а не просто написанный код. И если иметь в виду затраты на втаскивание. Втащить в яву библиотеку - от 15 минут до часа. В Си - от часа до года. И втащится только половина. Половина собирается не так, не тем, тащит несовместимые либы не тех версий или просит для сборки ещё половину вселенной.

  7. Ну и да. JIT давно уже генерирует более эффективный код, чем статический компайлер. Уже хотя бы потому что постоянно профилирует исполнение программы. На реальных данных. А учитывая несравнимо более высокую читаемость программ на Яве после переписывания почти автоматом получится сделать рефакторинг, который всё ещё сильнее упростит и, вероятно, ускорит.

  8. На ++ тоже не пишите. Если карету 40 лет обвешивать молдингами и красить золотой краской она не станет звездолётом. А станет обвешанной хренью каретой. Опять же, это Вам говорит человек, который в 1988 прыгал от потолка, когда удалось добыть первый компилятор С++ и статью с описанием языка. Просто, опять же, 35 лет прошло.

  9. Если ваша религия не позволяет на Яве (что глупо, но ок) - пишите на Го. Это идеальная работа над ошибками - на выходе имеем тот же Си, но без дыр, без галиматьи. Этот язык, правда, устарел лет на 30 и в целом отражает образ мысли создателей Си: ООП зло, но без него никак, так что мы его добавим в язык, но через жопу, и сделаем вид, что ООП у нас нет. Эксепшены мы делать не умеем, поэтому они тоже зло и вы будете писать x, err = func(); if( err != nil) через строку и мы это объявим правильным подходом.

Ну то есть да, Вы отчасти правы - существует секта "Мы любим Си", которая всё ещё на нём зачем-то пишет. Но поскольку разработка на Си раз в 10 дороже разработки на той же Яве при худшем качестве результата, то существовать такая разработка может только в убытке, который покрывает какой-то обманутый технарями человек. Который или поймёт, что так не надо, или обанкротится.

"Согласно рейтингу языков программирования. PYPL (PopularitY of Programming Language) на основе данных Google Trends за январь 2023 года, в первую двадцатку популярных языков входят: Python, Java, JavaScript, C#, C/C++, PHP, R, TypeScript, Swift, Objective-C, Go, Rust, Kotlin, MATLAB, Ruby, VBA, Ada, Dart, Scala и Visual Basic. "

Не обманывайте себя. Пятое место тут - это поддержка старых проектов. Код живёт очень долго. Но - таки умирает. Новых проектов на Си не запускают. И - я планирую при жизни увидеть ядро Линукса не на Си.

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

Спасибо. :) (Увы, безопасных юрисдикций нет.)

Замечательная статья. Читал запоем! Спасибо. :)

Покупайте процессоры Мультиклет. Оригинальная Российская архитектура с традиционной длиной команды.

Процессоры дешевеют при массовом производстве. Для массового производства нужен массовый заказ. Для массового заказа процессор должен быть дешёвым.

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

Извините. Это причёсанный транскрипт выступления, он неидеален, я согласен.

Вы правы.

Ок, я переформулирую. Множество известных сценариев взлома кода на Эльбрусе нереализуемо.

Что касается смысла - stuxnet был написан для поражения одного конкретного противника.

На Э2К работает, в частности, одна из ключевых федеральных систем РФ - паспорта. Я бы не счёл нулевой вероятность появления заказчика на её взлом.

Разве тут есть противоречие?

Update: Версия на Java в основном соответствует оригиналу, заработали даже MIDI музыка (кстати, она там неплоха) и AI.

В надежде придать этому проекту новый импульс переписал его к чертям на Java. Сейчас код в процессе активного рефакторинга. Хочется избавиться от родовых архитектурных травм, которые в OpenTTD тщательно сохраняются. :) Присоединяйтесь!

https://github.com/dzavalishin/jdrive

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

Ничто человеческое людям не чуждо. :)

Там проблема не в файл записать, а массово сериализовать объекты…

1
23 ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity