LINUX.ORG.RU

История изменений

Исправление lesopilorama, (текущая версия) :

По поводу срача языков.

  1. Go - делать достаточно быстрые бинарники так, чтобы с рынка легко хантились разработчики, которые смогут это поддерживать. Требование доступности разработчиков на рынке здесь прямо основное. Язык ограничен в сложности как раз для этого, а компиляется в бинарник для скорости. Заточен под написание бизнес-логих в бигтехах: яндексы, озоны, VK, гуглы. Когда надо налабать быстро некую новую систему и чтобы оно было машинным кодом, но при этом чтобы исходник выглядел не как жопа на C++. Управление памятью вынесли в GC, как раз чтобы эти жопошники изобретатели аллокаторов в C++ пошли лесом и не плодили костылей.

  2. C++ - делать максимально упорото производительные бинарники, где разраб должен думать про всё, максимальный контроль человека. Иногда это надо. Это типа как армейское оборудование и вооружение на рынке. Допускают только профессионалов, хантить их тяжелее, можно оторвать себе кусок жопы неудачным выстрелом и расхерачить пол-страны и потерять все полимеры. Относятся с опаской.

  3. Rust - когда не хочется GC, хочется приблизиться к C++, но при этом гарантировать на этапе компиляции отсутствие дедлоков, проездов по памяти чужого массива или запись по указателю, по которому не планировалось записывать или разлочивание того, что не планировалось разлочивать и т.п. В некоторых вещах C++ обогнать не получается, потому что некоторые проверки в Rust неизбежно делаются в рантайме за счёт CPU, а не компилятора (всякие там if-ы на границы массива). Писать на Rust сложно, потому что тебя постоянно бьют по башке палкой, буквально выясняется что как ты раньше писал - это в корне ошибочно на каждом шагу и нужно больше точности и определённости. Но у Rust есть злые враги - системы формальной верификации программ: для любой программы на голом Си можно описать некий «Образ» на специальном языке (их штуки 3 видел, забыл уже), а потом специальная машина доказывает, что софтина формально корректна и ей негде падать. Вроде бы таким макаром делают микроядра гипервизоров, которые внутри айфона сверху надзирают над iOS чтобы когда хакеры получили root всё равно не смогли доступ к драйверу модема получить.

  4. TypeScript - довольно неплохая штука: буквально статически типизируемый JS с дополнительными свистоперделками, выглядит достаточно неплохо, строго и не сложно. Транслируется в JS. JS умирать не собирается, глубоко укоренился в браузерах, выполняется тоже быстро, потому что компиляется в машинный код JIT-ом.

Исправление lesopilorama, :

По поводу срача языков.

  1. Go - делать достаточно быстрые бинарники так, чтобы с рынка легко хантились разработчики, которые смогут это поддерживать. Требование доступности разработчиков на рынке здесь прямо основное. Язык ограничен в сложности как раз для этого, а компиляется в бинарник для скорости. Заточен под написание бизнес-логих в бигтехах: яндексы, озоны, VK, гуглы. Когда надо налабать быстро некую новую систему и чтобы оно было машинным кодом, но при этом чтобы исходник выглядел не как жопа на C++. Управление памятью вынесли в GC, как раз чтобы эти жопошники изобретатели аллокаторов в C++ пошли лесом и не плодили костылей.

  2. C++ - делать максимально упорото производительные бинарники, где разраб должен думать про всё, максимальный контроль человека. Иногда это надо.

  3. Rust - когда не хочется GC, хочется приблизиться к C++, но при этом гарантировать на этапе компиляции отсутствие дедлоков, проездов по памяти чужого массива или запись по указателю, по которому не планировалось записывать или разлочивание того, что не планировалось разлочивать и т.п. В некоторых вещах C++ обогнать не получается, потому что некоторые проверки в Rust неизбежно делаются в рантайме за счёт CPU, а не компилятора (всякие там if-ы на границы массива). Писать на Rust сложно, потому что тебя постоянно бьют по башке палкой, буквально выясняется что как ты раньше писал - это в корне ошибочно на каждом шагу и нужно больше точности и определённости. Но у Rust есть злые враги - системы формальной верификации программ: для любой программы на голом Си можно описать некий «Образ» на специальном языке (их штуки 3 видел, забыл уже), а потом специальная машина доказывает, что софтина формально корректна и ей негде падать. Вроде бы таким макаром делают микроядра гипервизоров, которые внутри айфона сверху надзирают над iOS чтобы когда хакеры получили root всё равно не смогли доступ к драйверу модема получить.

  4. TypeScript - довольно неплохая штука: буквально статически типизируемый JS с дополнительными свистоперделками, выглядит достаточно неплохо, строго и не сложно. Транслируется в JS. JS умирать не собирается, глубоко укоренился в браузерах, выполняется тоже быстро, потому что компиляется в машинный код JIT-ом.

Исправление lesopilorama, :

По поводу срача языков.

  1. Go - делать достаточно быстрые бинарники так, чтобы с рынка легко хантились разработчики, которые смогут это поддерживать. Требование доступности разработчиков на рынке здесь прямо основное. Язык ограничен в сложности как раз для этого, а компиляется в бинарник для скорости. Заточен под написание бизнес-логих в бигтехах: яндексы, озоны, VK, гуглы. Когда надо налабать быстро некую новую систему и чтобы оно было машинным кодом, но при этом чтобы исходник выглядел не как жопа на C++

  2. C++ - делать максимально упорото производительные бинарники, где разраб должен думать про всё, максимальный контроль человека. Иногда это надо.

  3. Rust - когда не хочется GC, хочется приблизиться к C++, но при этом гарантировать на этапе компиляции отсутствие дедлоков, проездов по памяти чужого массива или запись по указателю, по которому не планировалось записывать или разлочивание того, что не планировалось разлочивать и т.п. В некоторых вещах C++ обогнать не получается, потому что некоторые проверки в Rust неизбежно делаются в рантайме за счёт CPU, а не компилятора (всякие там if-ы на границы массива). Писать на Rust сложно, потому что тебя постоянно бьют по башке палкой, буквально выясняется что как ты раньше писал - это в корне ошибочно на каждом шагу и нужно больше точности и определённости. Но у Rust есть злые враги - системы формальной верификации программ: для любой программы на голом Си можно описать некий «Образ» на специальном языке (их штуки 3 видел, забыл уже), а потом специальная машина доказывает, что софтина формально корректна и ей негде падать. Вроде бы таким макаром делают микроядра гипервизоров, которые внутри айфона сверху надзирают над iOS чтобы когда хакеры получили root всё равно не смогли доступ к драйверу модема получить.

  4. TypeScript - довольно неплохая штука: буквально статически типизируемый JS с дополнительными свистоперделками, выглядит достаточно неплохо, строго и не сложно. Транслируется в JS. JS умирать не собирается, глубоко укоренился в браузерах, выполняется тоже быстро, потому что компиляется в машинный код JIT-ом.

Исходная версия lesopilorama, :

По поводу срача языков.

  1. Go - делать достаточно быстрые бинарники так, чтобы с рынка легко хантились разработчики, которые смогут это поддерживать.

  2. C++ - делать максимально упорото производительные бинарники, где разраб должен думать про всё, максимальный контроль человека. Иногда это надо.

  3. Rust - когда не хочется GC, хочется приблизиться к C++, но при этом гарантировать на этапе компиляции отсутствие дедлоков, проездов по памяти чужого массива или запись по указателю, по которому не планировалось записывать или разлочивание того, что не планировалось разлочивать и т.п. В некоторых вещах C++ обогнать не получается, потому что некоторые проверки в Rust неизбежно делаются в рантайме за счёт CPU, а не компилятора (всякие там if-ы на границы массива). Писать на Rust сложно, потому что тебя постоянно бьют по башке палкой, буквально выясняется что как ты раньше писал - это в корне ошибочно на каждом шагу и нужно больше точности и определённости. Но у Rust есть злые враги - системы формальной верификации программ: для любой программы на голом Си можно описать некий «Образ» на специальном языке (их штуки 3 видел, забыл уже), а потом специальная машина доказывает, что софтина формально корректна и ей негде падать. Вроде бы таким макаром делают микроядра гипервизоров, которые внутри айфона сверху надзирают над iOS чтобы когда хакеры получили root всё равно не смогли доступ к драйверу модема получить.

  4. TypeScript - довольно неплохая штука: буквально статически типизируемый JS с дополнительными свистоперделками, выглядит достаточно неплохо, строго и не сложно. Транслируется в JS. JS умирать не собирается, глубоко укоренился в браузерах, выполняется тоже быстро, потому что компиляется в машинный код JIT-ом.