Прошлые домены не функционирует! Используйте адрес
ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна.
Подробности случившегося. Мы призываем всех неравнодушных
помочь нам с восстановлением утраченного контента!
GOD TIER: C#
TOP TIER: C, C++, Kotlin
MIDDLE TIER: Python, JS
LOW TIER: Java, Scala, Ruby, Swift/Objective-C, VB, MATLAB, Erlang
SHIT TIER: GO, PHP, 1C, ABAP
USELESS SHIT TIER: Pascal (и диалекты, включая Delphi), Perl, Haskell, F#, Lisp (все диалекты, особенно схема), Rust, старые диалекты бейсика, Пролог, sh (и разновидности)
C#: Хорош всем, самый сбалансированный и универсальный язык. Можно писать всё, начиная от операционных систем и заканчивая веб-сайтами и десктопными программами. Обладает шикарным тулингом (VS, ReSharper, Rider). С недавнего времени в него завезли кроссплатформенность. Отлично поддерживает многопоточное программирование, обладает широким функциональным функционалом (лямбды, первоклассные функции, функции высших порядков через LINQ, паттерн матчинг), а также шикарным ООП: объектно-ориентированная модель не перегружена, проста в понимании, но в то же время выразительна: например, нормально работают имплицитные методы. Обладает мощностью C++, позволяет вручную управлять памятью, но поддерживает совершенный сборщик мусора. Легко интегрируется с другими языками. Шикарная стандартная библиотека, развитый менеджер пакетов NuGet, большое количество сторонних библиотек для любых задач. Есть системы для сборки и деплоя, автоматического тестирования. Есть нормальные ORM. Можно делать хорошие десктопные приложения.
C++: Позволяет напрямую управлять памятью и писать любые программы. Хороший тулинг, включая самые совершенные компиляторы из существующих, статический анализ. Абсолютно кросплатформенен, хорошо поддерживает многопточное программирование. Современные кресты позволяют писать в функциональной парадигме, но ООП излишне усложнён, включает бесполезные парадигмы вроде множественного наследования. Вместе с системой шаблонов отладка сложной ОО-архитектуры может превратиться в ад. Нет менеджера пакетов Conan кривой до жути, зато есть библиотеки под любые задачи. Легко интегрируется с другими языками. Отличная стандартная библиотека, плюс нельзя забывать про Boost и Qt. Есть системы для сборки и деплоя (make, cmake и.т.п.), которые необходимо знать для работы. Слишком сложный, однако при должном использовании позволяет добиться максимальной производительности. Обладает кучей недостатков вроде неочевидного Undefined behavior, и требует ебли с компиляторами. ORM говно. Qt говно, но не имеет альтернатив.
Kotlin: замеа устаревшей Java. Очень сильно напоминает C#, местами даже более лаконичный. Подходит весь тулинг от Java, который развивался ближайшие два десятилетия. Нет репозитория с пакетами. Подходят Java-библиотеки, которых очень много, но они менее качественные, чем шарповые. Многопоточность как в Java, однако есть ещё и async/await как в C#, Javascript и плюсах с питоном. В целом, очень хороший язык, но немного хуже, чем C#. Нельзя писать десктопные приложения.
C: подмножество (в нестрогом смысле) языка C++. Очень логичный и простой в изучении, подходит для обучения, программирования микроконтроллеров, а также как второй язык для написания "узких мест" в программах на других языках. Абсолютно кросплатформенный, обладает отличными компиляторами, достойным тулингом. Нет менеджера пакетов, но есть много библиотек. Обладает многими недостатками плюсов. Сложные программы на нём пишет только Линус, ORM нет.
Python: Один из самых простых языков для изучения. Невероятно универсальный, отлино подходит для людей, программирование для которых не является главным скиллом. Из-за этого используется в ML, для прототипирования, в расчётных программах вместо matlab, в качестве инструмента для написания shell-скриптов. Есть богатый репозиторий с пакетами. ООП кривое-косое, инкапсуляция фактически не поддерживается, интерфейсов нет, абстрактных классов нет, зато зачем-то есть множественное наследование. Вместо свитч-кейса используются словари, тормозит, как мразь, глючит кодировками. Есть приличный тулинг (IDE PyCharm от житбрейнс), очень много качественных библиотек и фреймворков, используется в вебе. Многопоточное программирование поддерживает, есть ORM. Функциональное программирование не такое развитое, как в других языках, но присутствует -- есть лямбды, функции первоклассные. Сборка и деплой вроде работают. В целом, как язык -- плох но замены пока не предвидится, поэтому слесарить на питоне не зашквар -- единственный язык динамической параши который в принципе можно терпеть.
JS: Единственный язык, который выполняется в браузере. ООП очень своеобразное, отличается от всех других описанных языков (так как основывается на давно мёртвом смолтолке, а не на симуле) и на мой вкус куцое. Прекрасно поддерживает функциональное программирование. Обладает отличным тулингом, поддерживается во всех мажорных IDE, имеет менеджер пакетов npm, развитые системы для сборки и деплоя. Плохо поддерживает многопоточное программирование, которое работает через жуткие костыли. Много библиотек. Как язык неплох, и слесарить на JS не зашквар, особенно используя костыли вроде TypeScript.
Java: сильно отстаёт от C# и Kotlin. Очень многословна. Существует отличный тулинг, много библиотек, развитая система сборки, а вот репозитория с пакетами нет. Асинхронное программирование поддерживает плохо, функции не первоклассные. ООП классическое, однако многого функционала из C# и Kotlin не хватает. Есть много кривых неприятных моментов: например отсутствуют структуры с семантикой копирования, навязывается throws, платный компилятор... С приходом новых языков стала не нужна и живёт за счёт легаси. Есть много ORM, многопоточное программирование поддеоживается достойно, но хуже, чем в более современных языках. Как язык жаба неплоха, но устарела и слесарить на жабе не зашквар.
Scala: была очень многообещающим языком, но за десятилетия не удалось исправить огромное количество проблем. Тулинг отвратительный, хуже, чем у котлина. Менеджера пакетов нет. С жабой совместима через жопу. Поддерживает много неоправдавших себя парадигм: например, является одним из самых популярных языков для написания акторов и одним из самых популярных языков для создания DSL -- при этом ни то, ни то не взлетело. Есть крутой паттерн матчинг. Срывает голову метапрограммированием и похожим на Ruby ООП, за что заслуживает почётное место на свалке. Имеет встроенную систему для билда SBT. Нормальных ORM не имеет. Нормальных задач не имеет. Используется в банках для распила бюджета.
Ruby: очень похож на питон. Имеет более развитое и логичное ООП, хороший тулинг (включая IDE от JetBrains). Имеет хороший менеджер пакетов, ORM, зато не имеет системы для билда и деплоя. Хорошо поддерживает функциональное программирование и многопоточный код. Как язык руби хорош, критических недостатков не имеет (кроме регулярок в стиле perl) но не взлетел. Типизация динамическая, так что при наличии хороших альтернатив писать на руби зашкварно. На нём почти и не пишут. Нигде кроме веба не используется и никогда не использовался.
Swift/Objective-C: Если честно, на них не написал ни строчки, поэтому рассказывать не буду. Быстрое гугление показывает, что там всё есть, кроме универсальности. Используется только для устройств от Apple.
VB: C# с клоунским синтаксисом. Есть всё то же, что и в шарпе. Зашкварно ли на нём писать не берусь решить.
MATLAB: лучше подходит для прототипирования научных расчётов, чем питон. При необходимости можно написать что угодно, вплоть до ГУИ и веб-сервера, но обладает рядом кривых охуительных особенностей вроде указателей формата double. Писать на матлабе не зашкварно.
Erlang: не писал, не знаю, но похоже зашквар -- акторы, динамическая типизация, при этом может вылететь сегфолт...