Ответы пользователя по тегу Языки программирования
  • Какой язык может быть так же удобен как JavaScript/Ruby/Python но компилируемый и по скорости на уровне C++?

    bingo347
    @bingo347
    Ткнуть в доку лучше готового к копипасте ответа
    по скорости на уровне C++
    дайте подумать... C++?
    А вообще, Вы явно что-то делаете не так, если упираетесь в производительность языка на современном железе. Вот честно, даже на тормознутой 8 битной атмеге, что в ардуинах идет, при нормальном составлении алгоритмов разница между C и JS измеряется в наносекундах, при том что движки JS там как правило не очень навороченные, без кучи оптимизаций.
    А вот еще интересный момент: если бездумно скопировать код из ответов одного из местных кураторов JS, обожающего алгоритмы с квадратичной сложностью, в бенчмарк под последнюю ноду, а в противовес ему поставить бенчмарк из алгоритма 1 в 1 переписанного на C, то нода неожиданно окажется быстрее, просто потому, что v8 лучше умеет в оптимизации чем -o3 компилятор из gcc.
    Ну и если сравнивать все эти наносекунды вычислений с микросекундами чтения с NVMe SSD или вообще с миллисекундами работы с сетью - первые окажутся временем, которым можно принебречь.

    А если по сабжу, берите Rust, универсальный язык с soundness типизацией и с автоматическим управлением памятью в compile-time на базе этой самой типизации, ну а главное с хорошо продуманным дизайном, что делает его по настоящему удобным, особенно в перспективе поддержки продукта более полугода разными людьми.
    Ответ написан
  • На чём написаны интерпретаторы и компиляторы разных языков?

    bingo347
    @bingo347
    Ткнуть в доку лучше готового к копипасте ответа
    Как уже сказали в других ответах, компиляторы и интерпретаторы пишут так же на языках программирования.
    Насчет компиляторов так же считается, что зрелый язык позволяет написать собственный компилятор на себе самом. И для многих компилируемых языков компиляторы действительно написаны на них самих. Но тем не менее, самый первый компилятор все равно придется написать на другом языке, в современном мире для этого очень часто выбирают OCaml, хотя и другие языки вполне подойдут.
    Интерпретируемые языки нуждаются в интерпретаторе, который пишется на компилируемых языках. Простор выбора тут огромен, но чаще все же встречается или C или C++.
    Так же еще встречается JIT компиляция (js (не всегда), lua), при которой весь процесс компиляции происходит непосредственно перед выполнением, а так же гибридная AOT+JIT компиляция (C#, Java), когда исходный код компилируется в байткод при разработке (AOT), а перед исполнением байткод компилируется в машинный код (JIT), что позволяет получить плюсы от обоих типов компиляции. JIT компиляторы как и интерпретаторы как правило пишут на AOT-компилируемых языках.
    Ну и надо не забывать, что почти у каждого языка бывает стандартная библиотека, которая может быть написана как на самом языке (C, C++, Go, Rust), на самом языке + на другом, чаще на C или C++ (js (не во всех движках), C#, Java, python (не уверен, что он не к следующему типу больше)), либо полностью на другом языке (php, python (?)). Тут все сильно зависит, на сколько в языке доступно низкоуровневое общение с ОС и железом, а так же на сколько это быстро можно выполнить не ломая "сахара" языка.
    Ответ написан
  • Какой язык поможет научиться грамотно подходить разработке на БЭ?

    bingo347
    @bingo347
    Ткнуть в доку лучше готового к копипасте ответа
    Хотите, чтоб компилятор бил по рукам за почти любые грехи - попробуйте Rust, хорошие практики он Вам точно привьет, а там глядишь, пока изучаете эти самые практики, и вакансий на нем больше будет.
    Но в любом случае, после Rust и на TS начинаешь писать иначе, лучше.
    Ответ написан
  • Стоит ли учить С/С++ если не планируешь писать на нём?

    bingo347
    @bingo347
    Ткнуть в доку лучше готового к копипасте ответа
    Языки не нужно учить. Это крайне вредно. Ну заучите Вы синтаксис и базовые принципы, а что дальше? Программировать с этим Вы не сможете. Подход выучить ЯП Х не работает, как и не работает подход выучить естественный. Просто подумайте, кто быстрее заговорит на английском - тот кто выучит много слов и правил или тот кто поедет в США и будет вынужден там общаться? С языками программирования все то же самое.

    Теперь о C и C++
    C наверно самый простой ЯП, проще только ассемблер. Из высокоуровневых абстракций в нем только типы данных да структурное программирование (if, for, while, ...). Вы скорее всего уже с этим всем знакомы. Из нового разве что будет работа с указателями, опять же максимально простым способом - в лоб.
    C++ - обвешали простой C максимальным количеством высокоуровневых абстракций (все виды полиморфизма, ООП, замыкания, динамическая диспетчеризация и т.д.), что сделало его очень сложным. Вам понадобятся годы практики (практики, а не зубрежки!), чтобы просто понять, что здесь происходит. А скорее всего Вы просто бросите это дело, породив пару десятков UB в простейшей программе и на ровном месте.
    Ответ написан
  • Какой самый низкоуровневый язык програмирования?

    bingo347
    @bingo347
    Ткнуть в доку лучше готового к копипасте ответа
    Ассемблеры разные бывают, по сути для каждой архитектуры существует свой ассемблер. А еще для разных ОС могут быть диалекты. Ассемблер - это прямое соотношение машинных команд с более человекопонятным ассемблерными, нумерации регистров с их именами и т.д. Так что что-то посередине воткнуть не получится.

    P.S. когда уже русский язык станет самым популярным? Как Вы собираетесь с формальными языками разбираться, если не можете освоить естественный?
    Ответ написан
  • Почему в ЯП'ах максимум 64 байта для переменной?

    bingo347
    @bingo347
    Ткнуть в доку лучше готового к копипасте ответа
    Это в каком это ЯП 64 байтные инты?
    64 бита (8 байт) - размер машинного слова на 64 разрядных машинах, это означает, что у Вас регистры процессора в основном по 64 бита, ячейки памяти, тоже по 64 бита. А значит и 8 битный инт на деле займет 64 бита, хотя если компилятор будет понимать, что вот тут до 8 подряд идущих 8 битных интов (или до 4х 16-битных, до 2х 32 битных), то их можно положить все в одну ячейку.
    Инты до 64 бит большинство современных процессоров могут обрабатывать в 1 ассемблерную команду для основных арифметических операций. Для большей разрядности арифметика уже строится алгоритмически. В некоторых случаях ее можно оптимизировать с помощью SIMD инструкций, но в любом случае задача это нетривиальная и далеко не всегда нужная. Поэтому ЯП ориентированные на математические вычисления как правило имеют такие типы данных, а другие языки чаще предлагают использовать библиотеки.
    Ответ написан
  • Какой второй язык программирования учить с заделом на будущее?

    bingo347
    @bingo347
    Ткнуть в доку лучше готового к копипасте ответа
    1. Haskell - вправит мозги на место
    2. Rust - с заделом на будущее самое то
    3. JS - в купе с python'ом проблем найти работу в ближайшие 50 лет не будет
    Ответ написан
  • Какие языки используют для создания приложений?

    bingo347
    @bingo347
    Ткнуть в доку лучше готового к копипасте ответа
    ОС чаще всего пишут на низкоуровневых языках, вроде C (Linux, FreeBSD), C++ (Windows), Rust (Redox). Иногда используют ассемблерные вставки.

    Игры (имеются в виду 3D игры) чаще всего пишут на C++, но так же возможно на C# (Unity), JS (Unity или что-то упрощающее работу с WebGL). Хотя могут быть и другие языки (например майнкрафт написан на JAVA, а старый добрый Doom - на C). Так же понадобится язык шейдеров для программирования видеокарты, например для OpenGL и WebGL таким языком является GLSL.

    Прикладной софт вообще пишется на чем угодно, выбор языка зависит от задачи. Но в некоторых сферах все же можно выделить лидеров:
    Энтерпрайз решения - Java EE, реже C#
    Десктопный софт под Windows - C# (реже другие языки .net платформы)
    Десктопный софт под MacOS - Swift
    Десктопный софт кросплатформенный - Java, Python, JS (Electron)
    Мобильный софт под Андроид - Kotlin, Java
    Мобильный софт под iOS - Swift
    Мобильный софт кросплатформенный - C# (Xamarin), JS (Cordova, ReactNative, etc.)
    Серверный софт - php, Python, Ruby, JS (node), Java, Go, Rust, ... вариантов много
    Браузерный софт - JS или то что компилится в JS (чаще TypeScript)
    Ответ написан
  • Какой язык выбрать после PHP?

    bingo347
    @bingo347
    Ткнуть в доку лучше готового к копипасте ответа
    Если чисто посмотреть и отвлечься - попробуйте что-нибудь низкоуровневое, например C или Rust, или еще на уровень ниже - какой либо диалект ассемблера (для Linux'а например сейчас актуален NASM x86_64), это по крайней мере пользу принесет, в виде базового понимания, как железо работает.
    Другой вариант, посмотреть на парадигмы своего языка со стороны других языков. Например в php преобладает ООП - смотрим на другие ООП языки - C# или Java.
    И еще вариант, разобраться с совершенно новой парадигмой, например ФП (clojure, haskell) или акторами (Erlang, в какой то степени Go)
    P.S.

    ИМХО, но Ruby и Go - плохие языки, да php позволяет Вам на говнокодить, но и не запрещает писать качественный и поддерживаемый код, а вот с Ruby и Go так не пройдет:
    Ruby - write only язык, годный лишь на то чтоб накидать MVP, опробовать идею и, если поперло, переписать все с нуля... посмотрите исходники gitlab и попытайтесь в них хоть что-то понять, к вечеру Вас уже будет тошнить от Ruby, и так можно сказать про любой Ruby проект живущий дольше нескольких месяцев...
    Go - я убил на этот язык больше года, пока не понял, что язык форсирует на копипасту... Кто-то умный рассказал Вам про принцип DRY? С Go Вам придется забыть об этом принципе... Опять же, загляните в исходники докера, чтоб понять о чем я говорю...
    Ответ написан
  • Правильно ли изучать все и сразу?

    bingo347
    @bingo347
    Ткнуть в доку лучше готового к копипасте ответа
    учить что-то бесполезно, нужна практика а не зубрежка.
    выкиньте вообще все учебники пылится на полку, они не эффективны, придумайте себе проект и начните его делать, а там где уже попали в ступор - идите в справочники и учебники, так профит будет в разы больше

    ну и насчет распылятся сразу на несколько ЯП, тоже не стоит, в голове каша будет. лучше натренироваться досконально в чем то одном, а остальное уже после смотреть для общего развития
    иначе в голове возникнет каша, Вы ведь не изучаете в раз английский, немецкий и французкий? ну и с языками программирования так же
    Ответ написан
  • Какой язык выбрать?

    bingo347
    @bingo347
    Ткнуть в доку лучше готового к копипасте ответа
    Я занимался разработкой веб-приложений
    Предполагаю, что Вы знаете JS, тогда почему бы не выбрать его?
    Десктоп написать с использованием Electron.js
    Мобайл - ReactNative

    Еще как вариант - C#
    Десктоп на .Net Core
    Мобайл на Xamarin
    Ответ написан
  • Как использовать возможность изменения работающей программы?

    bingo347
    @bingo347 Куратор тега JavaScript
    Ткнуть в доку лучше готового к копипасте ответа
    eval - deprecated начиная с es5
    Есть более продвинутые способы исполнения сгенерированного кода в рантайм, самый простой и кросплатформенный - конструктор Function
    Применяется это для мета-программирования, то есть когда программа изменяет сама себя
    https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D...
    https://habrahabr.ru/post/137446/
    https://habrahabr.ru/post/227753/
    Ответ написан