История изменений
Исправление peregrine, (текущая версия) :
-
Технически пофиг. А практически чтоб тебе было понятнее в своём коде у тебя есть выбор обзывать то что ты делаешь сервисом или компонентом.
-
Нет, иногда, it depends. Тут смотри какая штука: идеально написанная программа на Java всегда будет медленнее идеально написанной программы на C++, которая в свою очередь проиграет сишке и растишке (но не так сильно, сишка при этом немного выиграет у растишки за счёт того что позволяет делать грязные и очень опасные вещи), а те проиграют идеальному ассемблерному коду (с оговоркой что пишет его первоклассный специалист). Но по факту, никто просто так не будет писать программу в 100 000 строк на C++, чтоб уделать программу в 1000 строк на Java. И не факт что даже если возьмутся, то из-за ошибок не сделают её хуже. Потому оптимизируют только то, что узко. В плане таких оптимизаций C++ выиграет у Java, но только если разработчик на C++ понимает что делает и не гнушается даже ассемблером. А уж про SIMD и говорить не приходится. Другое дело, что не в каждом алгоритме тебе помогут SIMD с ассемблером. Но там где помогут C++ порвёт Java как тузик грелку, пока у последней не доделают вальгалу (а зная как долго её делают, я поверю что ИИ будет всё писать к тому моменту, когда это случится вообще без участия человека). ИРЛ зная уровень «сеньоров» на отечественном рынке труда (почему он такой оставим на размышление тебе, когда будешь искать работу), то написать качественный и быстрый код (SIMD, ассемблерные вставки, серьёзная математическая оптимизация алгоритмов и их выбор под конкретную задачу, учитывая не только O(N), но и реальный объём данных на которых работает алгоритм конкретно в их программе, например, сортировка пузырьком будет быстрее ванильного квиксорта с куда лучшим O(N), если надо сортировать группы по 5 элементов), на C++ смогут полтора человека. Но бодаться с тяжёлой Java в прогретой виртуальной машине трудно - из-за того что она не просто компилируется, а переводится в байт код и исполняется в виртуальной машине, последняя на основе статистики может делать дополнительные оптимизации на лету, ускоряя хреново написанный код. И выходит что если код написан одинаково плохо на C++ и Java (а это именно так в больших программах, чем она больше, тем больше там говна), то Java запросто и победит его.
Исходная версия peregrine, :
-
Технически пофиг. А практически чтоб тебе было понятнее в своём коде у тебя есть выбор обзывать то что ты делаешь сервисом или компонентом.
-
Нет, иногда, it depends. Тут смотри какая штука: идеально написанная программа на Java всегда будет медленнее идеально написанной программы на C++, которая в свою очередь проиграет сишке и растишке (но не так сильно, сишка при этом немного выиграет у растишки за счёт того что позволяет делать грязные и очень опасные вещи), а те проиграют идеальному ассемблерному коду (с оговоркой что пишет его первоклассный специалист). Но по факту, никто просто так не будет писать программу в 100 000 строк на C++, чтоб уделать программу в 1000 строк на Java. И не факт что даже если возьмутся, то из-за ошибок не сделают её хуже. Потому оптимизируют только то, что узко. В плане таких оптимизаций C++ выиграет у Java, но только если разработчик на C++ понимает что делает и не гнушается даже ассемблером. А уж про SIMD и говорить не приходится. Другое дело, что не в каждом алгоритме тебе помогут SIMD с ассемблером. Но там где помогут C++ порвёт Java как тузик грелку, пока у последней не доделают вальгалу (а зная как долго её делают, я поверю что ИИ будет всё писать к тому моменту, когда это случится вообще без участия человека). ИРЛ зная уровень «сеньоров» на отечественном рынке труда (почему он такой оставим на размышление тебе, когда будешь искать работу), то написать качественный и быстрый код (SIMD, ассемблерные вставки, серьёзная математическая оптимизация алгоритмов и их выбор под конкретную задачу, учитывая не только O(N), но и реальный объём данных на которых работает алгоритм конкретно в их программе, например, сортировка пузырьком будет быстрее ванильного квиксорта с куда лучшим O(N), если надо сортировать группы по 5 элементов, на C++ смогут полтора человека. Но бодаться с тяжёлой Java в прогретой виртуальной машине трудно - из-за того что она не просто компилируется, а переводится в байт код и исполняется в виртуальной машине, последняя на основе статистики может делать дополнительные оптимизации на лету, ускоряя хреново написанный код. И выходит что если код написан одинаково плохо на C++ и Java (а это именно так в больших программах, чем она больше, тем больше там говна), то Java запросто и победит его.