откуда такая нелюбовь к нативному коду?
От: monax  
Дата: 19.01.12 07:55
Оценка: :)
Новые языки программирования растут как грибы после дождя. Старые набирают комьюнити. На вскидку популярные языки, которые на слуху: C, C++, C#, Java, VisualBasic, PHP, Python, Perl, JavaScript, lisp, scala, Deplhi, erlang, D, Dart, ObjectiveC, ActionScript, Lua, Ruby — какие-то из них мало используются (D), но всё равно на слуху. Так вот, большинство из этих языков интерпретируемые или компилятся в свой байт-код, нативный код из коробки дают C, C++, ObjC, Delphi, D и всё. Почему так мало языков, которые компилятся в нативный код?
Re: откуда такая нелюбовь к нативному коду?
От: maykie Россия  
Дата: 19.01.12 08:32
Оценка: -1
Здравствуйте, monax, Вы писали:

M>Новые языки программирования растут как грибы после дождя. Старые набирают комьюнити. На вскидку популярные языки, которые на слуху: C, C++, C#, Java, VisualBasic, PHP, Python, Perl, JavaScript, lisp, scala, Deplhi, erlang, D, Dart, ObjectiveC, ActionScript, Lua, Ruby — какие-то из них мало используются (D), но всё равно на слуху. Так вот, большинство из этих языков интерпретируемые или компилятся в свой байт-код, нативный код из коробки дают C, C++, ObjC, Delphi, D и всё. Почему так мало языков, которые компилятся в нативный код?


В нативных Segmentation fault получить. Заметно проще, учитывая наличие почти во всех них Null Pointer'а. Есть исключения вроде Eiffel если не ошибаюсь, но они нафиг никому не нужны. В явах NPE получить тоже не проблема, но там хотя бы красивая трассировка стека будет вместо всяких "память не может быть read"
Re: откуда такая нелюбовь к нативному коду?
От: mrTwister Россия  
Дата: 19.01.12 08:47
Оценка: +1
Здравствуйте, monax, Вы писали:

M>Новые языки программирования растут как грибы после дождя. Старые набирают комьюнити. На вскидку популярные языки, которые на слуху: C, C++, C#, Java, VisualBasic, PHP, Python, Perl, JavaScript, lisp, scala, Deplhi, erlang, D, Dart, ObjectiveC, ActionScript, Lua, Ruby — какие-то из них мало используются (D), но всё равно на слуху. Так вот, большинство из этих языков интерпретируемые или компилятся в свой байт-код, нативный код из коробки дают C, C++, ObjC, Delphi, D и всё. Почему так мало языков, которые компилятся в нативный код?


C# тоже дает нативный код из коробки (ngen входит в коробку)
лэт ми спик фром май харт
Re: откуда такая нелюбовь к нативному коду?
От: TimurSPB Интернет  
Дата: 19.01.12 09:00
Оценка:
А откуда такая любовь к нативному коду? Очень много программ, которые проще было бы реализовать меньшими силами на той же/*том же?*/ Java.
Make flame.politics Great Again!
Re[2]: откуда такая нелюбовь к нативному коду?
От: alexey_ma Израиль  
Дата: 19.01.12 09:12
Оценка:
Здравствуйте, TimurSPB, Вы писали:

TSP>А откуда такая любовь к нативному коду? Очень много программ, которые проще было бы реализовать меньшими силами на той же/*том же?*/ Java.

Да. Но есть задачи где без нейтива никак не обойтись. Отсюда и любовь, на нейтиве можно написать вообще все что угодно, конечно, возможно что с большими трудозатратами.
Re[2]: откуда такая нелюбовь к нативному коду?
От: maykie Россия  
Дата: 19.01.12 09:14
Оценка:
Здравствуйте, TimurSPB, Вы писали:

TSP>А откуда такая любовь к нативному коду? Очень много программ, которые проще было бы реализовать меньшими силами на той же/*том же?*/ Java.


Некоторые ценят скорость исполнения. Не всегда обоснованно правда.

ПС. Только не надо приводить ссылки на шатауты где явисты прыгают через собственную голову чтобы совсем не отставать от плюсистов.
Re[3]: откуда такая нелюбовь к нативному коду?
От: TimurSPB Интернет  
Дата: 19.01.12 09:23
Оценка:
M>ПС. Только не надо приводить ссылки на шатауты где явисты прыгают через собственную голову чтобы совсем не отставать от плюсистов.
Да я сам на плюсах пишу сейчас под несколько платформ. Все java потуги провалились из за критической нехватки производительности.
Make flame.politics Great Again!
Re[3]: откуда такая нелюбовь к нативному коду?
От: Ops Россия  
Дата: 19.01.12 09:41
Оценка:
Здравствуйте, alexey_ma, Вы писали:

_>Здравствуйте, TimurSPB, Вы писали:


TSP>>А откуда такая любовь к нативному коду? Очень много программ, которые проще было бы реализовать меньшими силами на той же/*том же?*/ Java.

_>Да. Но есть задачи где без нейтива никак не обойтись. Отсюда и любовь, на нейтиве можно написать вообще все что угодно, конечно, возможно что с большими трудозатратами.

Да. Но есть задачи где без ассемблера никак не обойтись. Отсюда и любовь, на ассемблере можно написать вообще все что угодно, конечно, возможно что с большими трудозатратами.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: откуда такая нелюбовь к нативному коду?
От: jazzer Россия Skype: enerjazzer
Дата: 19.01.12 09:45
Оценка: 1 (1) +9
Здравствуйте, monax, Вы писали:

M>Новые языки программирования растут как грибы после дождя. Старые набирают комьюнити. На вскидку популярные языки, которые на слуху: C, C++, C#, Java, VisualBasic, PHP, Python, Perl, JavaScript, lisp, scala, Deplhi, erlang, D, Dart, ObjectiveC, ActionScript, Lua, Ruby — какие-то из них мало используются (D), но всё равно на слуху. Так вот, большинство из этих языков интерпретируемые или компилятся в свой байт-код, нативный код из коробки дают C, C++, ObjC, Delphi, D и всё. Почему так мало языков, которые компилятся в нативный код?


Потому что "не нужен"?

Вот есть скрипт на перле/баше/питоне — и нафига ему компилиться в машкод? Что ты от этого собираешься выиграть?
Если нужна скорость, то ее можно достичь в любом тормозном языке через вызов частей, которые пишутся на нативных языках (но только они в нейтив и пишутся!).
Тот же питон — дичайшее тормозилово, но его можно (сюрприз!) использовать в научных вычислениях, потому что есть нативные библиотеки, написанные на Си, которые делают все быстро (NumPy、SciPy), а скриптовый язык просто предоставляет клей, которому нафиг не нужно быть супербыстрым и уж тем более компилиться в машкод. Тот же матлаб, те же игры, те же редакторы — начинка вся нативная, но логика на тормознутом скрипте (Matlab Script, Mathematica, Lua, eLisp, Autocad Lisp, VBA, из еще более высокоуровневых — Visual Basic, PowerShell, unix shell), и всем хорошо, и все довольны.

А нативщикам остается писать начинку, которой будет рулить какой-нть скрипт, и этот скрипт предоставит удобный и прозрачный DSL для решаемой задачи.
И это хорошо.
И пусть таких языков будет больше — людям жить будет легче, и программить смогут даже админы (перл, питон), которым для их поделок нафиг не нужны вяские петтерны и прочие радости "настоящего" программирования.

А чтоб писать скоростную начинку, много языков и не нужно, имеющихся более чем достаточно.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: откуда такая нелюбовь к нативному коду?
От: fdn721  
Дата: 19.01.12 09:46
Оценка:
Здравствуйте, TimurSPB, Вы писали:

TSP>проще было бы реализовать меньшими силами


Такой принцип уже применили к промышленности, и теперь практически всё делается в Китае.
Re[4]: откуда такая нелюбовь к нативному коду?
От: alexey_ma Израиль  
Дата: 19.01.12 09:47
Оценка:
Здравствуйте, Ops, Вы писали:

_>>Здравствуйте, TimurSPB, Вы писали:


TSP>>>А откуда такая любовь к нативному коду? Очень много программ, которые проще было бы реализовать меньшими силами на той же/*том же?*/ Java.

_>>Да. Но есть задачи где без нейтива никак не обойтись. Отсюда и любовь, на нейтиве можно написать вообще все что угодно, конечно, возможно что с большими трудозатратами.

Ops>Да. Но есть задачи где без ассемблера никак не обойтись. Отсюда и любовь, на ассемблере можно написать вообще все что угодно, конечно, возможно что с большими трудозатратами.

Точно, есть и задачи ислючительно для ассемблера.
Re[3]: откуда такая нелюбовь к нативному коду?
От: TimurSPB Интернет  
Дата: 19.01.12 09:51
Оценка: +1
F>Такой принцип уже применили к промышленности, и теперь практически всё делается в Китае.
И что? Ну стоила бы вся техника в 5 раз дороже без Китая. Китай Китаю к томуже рознь. Там весь ценовой спектр есть от паленых кросовок Panasonik до iPhone 4.
Make flame.politics Great Again!
Re: откуда такая нелюбовь к нативному коду?
От: okman Беларусь https://searchinform.ru/
Дата: 19.01.12 10:56
Оценка: -6 :))) :)
Здравствуйте, monax, Вы писали:

M>Новые языки программирования растут как грибы после дождя. Старые набирают комьюнити. На вскидку популярные языки, которые на слуху: C, C++, C#, Java, VisualBasic, PHP, Python, Perl, JavaScript, lisp, scala, Deplhi, erlang, D, Dart, ObjectiveC, ActionScript, Lua, Ruby — какие-то из них мало используются (D), но всё равно на слуху. Так вот, большинство из этих языков интерпретируемые или компилятся в свой байт-код, нативный код из коробки дают C, C++, ObjC, Delphi, D и всё. Почему так мало языков, которые компилятся в нативный код?


Нативные языки по своей природе ограниченны, потому что упираются в нижележащие
возможности архитектуры и операционной системы. Плюс некоторый "сахар" в виде
языковых средств (шаблоны в С++) и набора библиотек, но не больше.
Концепция компилируемых языков во многих отношениях свой ресурс исчерпала и дальше
двигаться просто некуда. Новые задачи не решаются совершенствованием компилятора и
добавлением новых библиотек.

Другие языки опираются на некий промежуточный слой (рантайм), который может
быть спроектирован более гибко и продуманно, с учетом специфики целевой области.
И он, как правило, предоставляет потенциально очень интересные и полезные возможности.
Например, динамическая генерация типов, позволяющая конструировать и использовать
объекты, информации о которых не было на стадии компиляции. Такой объект можно
сконструировать из данных, переданных, скажем, по сети с другого конца света.
Компилируемые языки отдыхают.

Да и смысл в компиляции иногда никакой.
Представьте, что если каждый bat-ник или сценарий WSH нужно было предварительно
скомпилировать с определенными настройками среды, и только после этого выполнять.

Еще один фактор — кросс-платформенность. Которую многие компилируемые языки
обеспечивают только на уровне исходного кода, да и то с массой "если" и "но".

Причем если раньше программы, написанные на интерпретируемых языках, работали на
порядки медленнее "нормальных", то потом ситуация нормализовалась.

Вот и получается, что выгоды очевидны, а минусы, если они вообще есть, несущественны.

P.S.
Да и потом, зачем нам еще один C++ ?
Re[2]: откуда такая нелюбовь к нативному коду?
От: Mazay Россия  
Дата: 19.01.12 11:14
Оценка: 4 (2) +2
Здравствуйте, okman, Вы писали:

O>Нативные языки по своей природе ограниченны, потому что упираются в нижележащие

O>возможности архитектуры и операционной системы.

Угу. А управляемым языкам доступны возможности квантовых вычислителей и бесконечная память.
Главное гармония ...
Re[3]: откуда такая нелюбовь к нативному коду?
От: LuciferSingapore Россия  
Дата: 19.01.12 11:25
Оценка: 1 (1) +1 :)
Здравствуйте, Mazay, Вы писали:

M>Здравствуйте, okman, Вы писали:


O>>Нативные языки по своей природе ограниченны, потому что упираются в нижележащие

O>>возможности архитектуры и операционной системы.

M>Угу. А управляемым языкам доступны возможности квантовых вычислителей и бесконечная память.


Нет, ты не понял. Просто управляемые языки пока еще не настолько совершенны, чтобы упереться в ограничения железа и ОС. Когда-нибудь, возможно, они подтянутся к этому уровню, но пока — увы и ах.
Re[2]: откуда такая нелюбовь к нативному коду?
От: jazzer Россия Skype: enerjazzer
Дата: 19.01.12 11:35
Оценка:
Здравствуйте, okman, Вы писали:

O>Нативные языки по своей природе ограниченны, потому что упираются в нижележащие возможности архитектуры и операционной системы.


Скорее, в их несовместимность при обромном разнообразии.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: откуда такая нелюбовь к нативному коду?
От: LF  
Дата: 19.01.12 11:43
Оценка:
Why IL
Re[2]: откуда такая нелюбовь к нативному коду?
От: TimurSPB Интернет  
Дата: 19.01.12 11:45
Оценка: +2
В теории красиво и правильно. Согласен полностью.
Но вот от стыковки C# с C++ я удовольствие испытал весьма сомнительное.
Make flame.politics Great Again!
Re[2]: откуда такая нелюбовь к нативному коду?
От: LF  
Дата: 19.01.12 11:45
Оценка: 1 (1)
Why IL

Меня иногда спрашивают о том, почему мы выбрали именно эту стратегию; почему компилятор C# не может напрямую генерировать машинный код без дополнительного промежуточного этапа? Зачем нам нужны два компилятора для преобразования кода на языке C# в машинные инструкции, когда достаточно было бы одного?

Существует несколько причин, но все они более или менее сводятся к одному: в нашем случае система, построенная на основе промежуточного языка, существенно дешевле.

Re: откуда такая нелюбовь к нативному коду?
От: LaptevVV Россия  
Дата: 19.01.12 11:47
Оценка: 7 (5)
Здравствуйте, monax, Вы писали:

M>Новые языки программирования растут как грибы после дождя. Старые набирают комьюнити. На вскидку популярные языки, которые на слуху: C, C++, C#, Java, VisualBasic, PHP, Python, Perl, JavaScript, lisp, scala, Deplhi, erlang, D, Dart, ObjectiveC, ActionScript, Lua, Ruby — какие-то из них мало используются (D), но всё равно на слуху. Так вот, большинство из этих языков интерпретируемые или компилятся в свой байт-код, нативный код из коробки дают C, C++, ObjC, Delphi, D и всё. Почему так мало языков, которые компилятся в нативный код?

Все причины — экономические: сокращают время и деньги.
1. Трансляция в виртуальную машину много легче, чем в реальную железную. Так как виртуальную машину можно сделать настолько удобной, насколько вообще можно.
2. Коды виртуальной машины можно обрабатывать как угодно — от чистой интерпретации до чистой компиляции в нативный код.
3. Опять же если компиляция, то ее можно выполнять самыми разными способами, хоть макроподстановкой.
4. Реализация виртуальной машины на другой платформе гораздо легче, чем реализация полноценного компилятора. Отвязываемся от зависимости по формату исполняемого файла.
5. Виртуальная машина позволяет писать разные части системы на разных языках, собирая их потом без проблем.
6. Для виртуальной машины легко реализовать сопутствующие вещи: отладчик, профайлер — у меня студенты на лабах делают.
И сборку мусора проще реализовать — это важно для прикладного программирования. Ошибок с памятью меньше будет.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.