Все самые популярные языки — общего назначения: JavaScript, Python, Java, C#, C, C++. Это означает, что на них на всех можно решать одни и те же задачи. Так что нифига языки не заточены каждый под свои задачи
Очень даже заточены.
- JS всегда был клиентским и в серверность его привёл совсем недавно NodeJS, и то это уже не тот JS, да и серверность из него, прямо скажем, сомнительная - развлекуха для школьников, на мой взгляд, хотя многие поспорят)
- Питон - скриптовальня чистой воды. Строить небольшие костылики межплатформенные - заебись. Но что-то масштабное и связанное, большой проект на нём писать - как паять молотком. Можно теоретически, но это надо сильно упороться)
- Си всех мастей.. ну ебани веб-систему (сайт) на Сях :)
Как и с питоном - всё возможно, как говорится: не бывает сложных программ, бывает влом писать на ассемблере.
Так что да, паяльником тоже можно пытаться забивать гвозди, но автор поста прав изначально - у каждого есть область применения, где он выигрывает у других, иначе не было бы смысла изобретать тот же велосипед вторично.
Это все не характеристика языка, а ты реализации, на которой они работают
Допустим, сейчас пилят mojo, который как питон, но компилируется
Да, реализации могут быть разными, но язык то тут причем?
Нет. У JavaScript-а несколько рантаймов, у питона два (не считая моджо), у джавы несколько, у си/си++ несколько компиляторов. Раньше еще были проекты IronRuby, IronPython. Раст и еще несколько умеет компилироваться в WebAssembly
И это не говоря о том, что на одном рантайме может работать несколько языков: на clr C# и F#, на JVM Java, Kotlin, Scala на OTP Erlang, Elixir и еще один, на LLVM работают C, C++, Rust и Julia
не бывает сложных программ, бывает влом писать на ассемблере.
А вот Боромир бы не поленился! А вот Боромир бы написал!
ну ебани веб-систему (сайт) на Сях :)
Теоретически можно. Но это, конечно, изъеб тот еще будет. Хотя кому-то нравится дизайн страницы не во всяких там html, xaml и прочих делать, а скриптами в С.
Как на с# + js писал сайты, так и на питоне +js. Вполне можно на шарпе такое делать и получится отлично. Ну а питон модно ругать, как пхп в свое время) видел и участвовал в больших проектах только на питоне. И пока все не упирается в cpu bound, то в чем проблема? Не православно?
А я кодил на VBScript сайтовые скрипты и писал на VisualBasic'е немало прикладного)
Можно, конечно, и если виртуозно владеть паяльником, то гвозди в целом могут забиваться не сильно медленнее, чем молотком:)
По делу - покажи кусок сайта на питоне (код) или шарпе - работу с базой, обработку входящих данных и http заголовков, куки, сессии.
И примеры сайтов (скрины или ссылки) на питоне / шарпе.
я же писал про работу) Публиковать рабочие куски кода? Спасибо, не хочу потом судиться с работодателем. Но то, что ты спрашиваешь, гуглиться банально за 5 минут.
Ну и ты такой молодец, сначала пишешь - бла бла, C# для сайтов не используют, python - язык скриптов для перемычек. А когда я предлагаю объяснить, в чем проблема, используешь прием священников - "а ты докажи, что я не прав". Бремя доказательства висит на утверждающем) Но так и быть, я помогу тебе немного.
на С# пишут чаще всего такое на ASP.NET, в официальном репозитории есть примеры кода и работы с ним
https://github.com/aspnet/samples/tree/main
А вот список платформ, которые используют ASP.NET
https://itproger.com/news/luchshie-sayti-sozdannie-na-c-asp-...
В питоне самые популярные фреймворки - Django и Flask.
Как мы можем видеть, топовые платформы используют их в том числе.
https://www.guvi.in/blog/famous-websites-built-with-python/
https://habr.com/ru/articles/542258/
Конечно, уверен, что CPU bound обработка видео в том же Netflix написана на статичном языке, но что мешает использовать для I\O bound задач только питон?
Но одно дело, когда мидлу на галере сказали, что теперь его кинут на другой язык, и совсем другое, когда на берегу человек выбирает стек под свой возраст, способности, привлекательные прикладные сферы и возможность перекинуться на параллельное направление.
Я к тому, что, вопрос не праздный, а вполне себе справедливый и актуальный. На всех языках можно добиться одного и того же, вопрос только в том, какой язык лучший. Я лично думаю, что лучший — Go. Он, с одной стороны, нативный и быстрый, а, с другой, простой как три копейки
ну ты шутник
на дерьме невыразительным
на котором ничего сложного нельзя сделать
и ничего простого быстро не напишешь
Че как там покушал сахарные функции для получения значений в 22 версии, спустя 15 лет создания языка
Ну что то большее, чем большой микросервис
Или что то большее, чем перекладывать джсон. Представь какой то unreal engine не на плюсах, а на го. Это с ума сойти можно.
Пoяснение насчет примера выше, функция для получения значений, это я про манипуляции со слайсами и мапами.
Большой микросервис тоже не. И нормальный тоже. Щас микросервисы превратили в микроговно, в котором контейнеры жрут больше, чем сам сервис.
Это не так.
У некоторых языков нет функционала, который есть у других. В JS вы не сможете сделать bitmap или работать с указателями.
Более того, JS будет куда менее эффективно распределять память на те же вещи, которые можно сделать со всем функционалом СИ.
Потому лучший или худший - это некорректный вопрос.
Есть язык с тем или иным функционалом. Вы берете тот уровень абстракции который вам нужен или с которым вы хотите работать.
И уже в пределах этого уровня выбираете язык, который вам близок синтаксисом.
Битмапу можно, а с указателями, да. Но арифметика указателей и так considered harmful, так что и не надо. Все остальное — можно
В тех же новых стандартах плюсов в ходу умные указатели, которые не умеют в арифметику указателей
Все ходовые языки имеют весь функционал, который нужен. Разница между ними именно в дизайне самого языка. Какой самый эргономичный? Какой язык лучше именно для человека?
Когда речь идет об офисных стульях — ответ очевиден, это Aeron. Когда о языках программирования, я думаю, что Go
Помимо функционала, есть такая вещь как производительность. И здесь js проигрывает тому же с++.
Bitmap в js нет. Можно битовые флаги через маски.
Как в том анекдоте: могу печатать 500 букв в минуту, но такая фигня получается.
Производительность го на уровне си, и при этом он безопасный
Можно аллоцировать буфер и что угодно с ним делать. Есть и типизированные массивы,с которыми тоже что угодно можно делать
Да-да, я уже понял, что вы всеми руками топите за GO а все остальное, по вашему мнению, криво и косо.
Вот забавный момент. Если скриптовой язык или язык высокого уровня умеет делать все тоже самое, так же эффективно, чтож для ОС тогда берут язык С?
Честнее было бы «производительность го на уровне си, и при этом либо он безопасный». Вон сколько import unsafe в стандартной библиотеке.
Так же и с плюсами. Есть один язык программирования, есть странные пародии на языки и каламбуры на программирование
кек =)
А чего тогда Unreal Engine не на JavaScript написали? А ядро Linux не на Python? Может, потому что язык не заточен под эти задачи?
Думаю, что знали, на том и написали. Тот же, допустим, git написан на си, а mercurial на питоне, хотя они появились в одно время
Внезапно
Система Mercurial написана на Python, хотя чувствительные к производительности части (например, своя реализация diff) выполнены в качестве модулей-расширений на C
И ещё внезапностей
Для повышения производительности также используется Rust
Не уверен что это с первого дня так было
И большая часть кода все равно на питоне, даже если есть какие-то выставки
Мы же не говорим что линукс написан на ассемблере, хотя ассемблерные выставки там есть
Не уверен что это с первого дня так было
Так о чём и речь. В процессе оптимизации уперлись в потолок языка и переписали на другом, более подходящем под задачу.
Что не так? Когда начинали писать линукс, других portable языков не было. Unreal был написан в конце 90-х, тогда как раз C++ начал заменять C, на нем и написали. Юнити был написан в 2005-м, уже использует C#. На питоне во-первых, есть игровые движки, а во-вторых, Blender на нем. Minecraft, топ-1 игра, на джаве. Все просто пишут на чем умеют. Так что или приводи аргументы, или иди нахуй
начинали писать линукс, других portable языков не было
Зачем ядру ОС быть написанной на "portable" языке и давно ли чистый C стал им ?
Blender на нем
Заходим на https://projects.blender.org/blender/blender/src/branch/main...
и видим CMakeLists.txt, начинаем что то подозревать ... большая часть блендера это таки C. Питон без низкоуровневых библиотек написанных на C непригоден ни для чего серьезного.
> Зачем ядру ОС быть написанной на "portable" языке и давно ли чистый C стал им ?
Чтобы работать на многих машинах. Для меня тоже удивительно, что в те времена он считался portable
поддерживаю, в примере Древний Ебипет. В 7-ом веке до нашей эры, что знали, тем и долбили. Прогу на камнях высекали и работает до сих пор, но никто не помнит ....этой перфорации. И паяльников не было, молоток круче.
Все самые популярные языки — общего назначения: JavaScript, Python, Java, C#, C, C++. Это означает, что на них на всех можно решать одни и те же задачи
И решать по-разному. Угадай, почему сейчас десктопные приложения пишут на яваскрипте. Да потому, что скорость разработки приоритетнее скорости работы и ресурсоёмкости приложения. И почему всякое банковское говно на яве. Потому что стабильность работы на любой системе важнее, чем ресурсоёмкость и скорость разработки. И туда же, почему операционные системы до сих пор пишут на Си. Потому что там нужно тянуть всё говно, которое сверху налепят.
Я думаю, это просто так исторически сложилось. Тут никаких причин-причин найти нельзя, потому что это просто человеческие вкусы и пристрастия
Так-то на асме можно вообще всё написать. Тут вопрос в стоимости и сроках - на разработку, поддержку, обновления.
Ну и перфоманс иногда роляет. Брать камень на 100 Мгц или 50? При тираже от ... штук это очень некислые бабки.
В итоге может оказаться дешевле найти какого-нибудь фортранщика или, прости господи, хаскелиста, который да, будет стоить х3 по зп, но зато сократить расходы на производство на пару-тройку десятков лямов за счёт удешевления железа.
Согласен. Но языки развиваются именно из за удобства, значит есть объективно лучший язык. Так что вопрос какой язык лучше начинать учить — далеко не праздный. Это мы, скуфы, не можем на него ответить вменяемо
Это означает, что на них на всех можно решать одни и те же задачи
Нет. Они просто самые популярные.
То, что ты сказал выделенным предложением, называется "язык программирования полный по Тьюрингу". Но, несмотря на возможность решать задачи, еще есть эффективность решения этих задач.
Я некорректно написал. В зависимости от задачи, разные языки могут быть эффективными.
Если тебе нужна развесистая бизнес-логика, то условный Kotlin подойдет лучше, и чем язык без GC, и чем язык без типизации.
Если тебе необходимо написать условный драйвер, то native языки подойдут лучше.
Если тебе надо очень быстро накидать чутка кода для ML, да еще и нет времени что-то айтишное учить, то Python подойдет лучше всего (на текущий момент).
Ну, на самом деле, никто так не делает. Все полезные библиотеки и подходы реализуются на каждом языке. Например, нужны тебе очереди. Очереди есть и на джаве и на питоне и на c# и черта в ступе. Или акторы. Или ML тот же. Да, исторически так сложилось что ML развивается именно на питоне, но библиотеки для ML-а есть на всех ходовых языках. На самом деле народ не переходит с языка на язык в зависимости от задач, а тащит все полезное в свои языки
Ну, на самом деле, никто так не делает.
Ты слишком радикально говоришь. Как раз по моему опыту именно так и поступают, но это требует наличия хотя бы миддлов.
Далее ты перечисляешь слишком простые вещи, а потом всё сводишь к Тьюринг полноте (в стиле «это можно решить на любом языке»).
А на деле ряд выбор языка позволяет добиться решения раньше (ну или позже). Но, как я сказал, для этого команде необходимы хотя бы мидлы.
Посмотри в библиотеки пакетов на всех языках. Во всех них есть пакеты для всех задач. Люди скорее склонны переписать какой-то алгоритм на своем языке, нежели брать ради этого другой язык
Кроме того, разработка на одном языке означает что у тебя меньше телодвижений по инфраструктуре, командная экспертиза копится, а не размывается
В общем, хотя примеры, когда в проекте используется несколько языков хоть и можно найти, это всегда будет один из двух паттернов: сборка и всякие инфраструктурные вещи написаны на чем-то скриптовом и когда нужна большая производительность, пишут на си. В остальном, народ пишет все на каком-то одном языке
Посмотри популярные репозитории на гитхабе. Ты увидишь, что репозиториев, где было бы 50% одного языка и 50% другого — нет. Даже 20% и 80% вряд-ли найдешь. Обычно соотношение 95% и 5% на другие языки
Во всех них есть пакеты для всех задач.
И уже третий раз ты говоришь про полноту по Тьюрингу. Я об этом сразу и написал. Я бы тебе посоветовал перестать использовать этот аргумент, так как он за скобками обсуждения.
Кроме абстрактного "всё можно решить на моём языке" есть еще применимость, эффективность разработки и пр.
Кроме того, разработка на одном языке означает что у тебя меньше телодвижений по инфраструктуре, командная экспертиза копится, а не размывается
Ты сильно преувеличиваешь плюсы.
Как изменится инфраструктура от смены Java на Kotlin?
командная экспертиза копится
Я уже сказал, что я не рассматриваю джунов. Если у тебя "синьор" всё еще копит экспертизу по популярным языкам, то тебе стоит пересмотреть уровни.
когда нужна большая производительность, пишут на си
Или Rust, или JVM/CLR. Многопоточный код крайне сложно написать на Си за приемлемое время, да и очень сложно будет обогнать те же JVM/CLR.
Посмотри популярные репозитории на гитхабе.
А смысл? Если у тебя один проект - это один репозиторий (и даже не монорепозиторий), то тогда еще рано говорить об архитектуре )
И уже третий раз ты говоришь про полноту по Тьюрингу. Я об этом сразу и написал. Я бы тебе посоветовал перестать использовать этот аргумент, так как он за скобками обсуждения.
Нет. Если бы люди в большей степени переключались между языками, мы бы увидели такую картину, что большинство библиотек написано на одном эффективном языке и все просто тянут ее как зависимость. Вместо этого мы видим переписывание одного и того же на разных языках
Как изменится инфраструктура от смены Java на Kotlin?
Да, можно найти примеры, что никак. Но в то же время, можно найти примеры что поменяется
Или Rust, или JVM/CLR. Многопоточный код крайне сложно написать на Си за приемлемое время, да и очень сложно будет обогнать те же JVM/CLR.
Все-таки, си больший мейнстрим
А смысл? Если у тебя один проект - это один репозиторий (и даже не монорепозиторий), то тогда еще рано говорить об архитектуре )
Ты, видимо, имеешь в виду портфель проектов. В текущей моде на микросервисы, действительно, один программный продукт может быть написан на разных языках. Но в рамках одного микросервиса между языками никто не переключается. Более того, один человек пишет примерно на одном языке
Нет ты не прав. Каждый язык заточен под свои задачи. Хайлоад можно написать на питоне. А можно заниматься быстрым прототипированием на плюсах. Только вот нужно ли
Хайлоад можно написать на питоне.
Правда при детальном рассмотрении окажется что питон там выполняет 0.5% задач, остальное делается специализированными библиотеками типа NumPy или tensor написанными на С(++).
Это уже идёт оптимизация. Это не отменяет того факта что на любом языке можно решить любую задачу
На самом деле народ не переходит от языка к языку в зависимости от задачи, а переписывает все нужные алгоритмы на своем языке
Ты заблуждаешься, но поскольку ты не приводишь никаких аргументов, которые можно было бы оспорить, продолжай считать так
А какие тут могут быть аргументы? Гугл в помощь. С того же питона мигрируют и на плюсы и на гошечку. Там где это оправдано и есть бюджет
Улыбнись!
1.2K постов2K подписчика
Правила сообщества
Данное сообщество создано для поднятия хорошего настроения, положительных эмоций.
Если кто-то несет в комментариях агрессию, негатив, унижение или оскорбления участников, постов или сообщества может быть забанен, комментарии скрыты.
Если содержание поста отличается от цели сообщества (поднятие хорошего настроения) пост может быть удален из сообщества.