Можно ли сделать язык компиляции высокого уровня?
Я сравнительно начинающий программист, который создал Visual Basic, Python и недавно начал изучать Java или C++ для более быстрого языка. Казалось, что основной причиной того, что эти языки были быстрее, было то, что они были скомпилированы (или для Java, в основном скомпилированы). Это привело меня к вопросу, можно ли будет сделать более простой язык, такой как Python, который компилируется для скорости?
Преимущества, которые имеют интерпретируемые языки, в основном заключаются в способности динамически изменять переменные по объему и типу. Тем не менее, в целом это (по моему небольшому опыту) сокращает длину кода на небольшое количество (возможно, до 10%, добавление публичного модификатора или int - это всего лишь одно слово). Также я не уверен, возможна ли сборка мусора на истинном скомпилированном языке (например, C++), но он доступен в java, которая примерно так же быстро / быстрее, как C++.
Можно ли сделать язык с очень простым синтаксисом (например, Python), с несколькими небольшими изменениями (статическими переменными) и разрешить его компиляцию в Java/C++ и оттуда скомпилировать в очень быструю программу?
Например: в очень ограниченном представлении Java, которое я сейчас имею, чтобы напечатать что-то, вы должны написать:
System.out.println("print this");
Однако в Python 3 вы пишете:
print("print this")
Если кто-то писал на этом теоретическом языке print("print this")
будет скомпилировано в System.out.println("print this");
а затем скомпилирован в байт-код JVM. Этот тип языка может, вероятно, сократить время производства, сохраняя при этом высокую скорость выполнения.
4 ответа
Похоже, вы ищете Святой Грааль. Я бы сказал, что это возможно. Но вам понадобится большая команда блестящих людей. И время.
PS Я не понимаю, как Java не достаточно быстро для вас. Мне нравится язык программирования Java, я не замечаю никакой задержки по сравнению с другими программами, написанными на разных языках, и я написал целые программы за день. Другими словами, быстрая скорость разработки. Также очень легко работать с другими людьми, пишущими Java. С такими инструментами, как eclipse, вы можете кодировать одновременно и использовать такие функции, как "сравнить / заменить", чтобы объединить вашу работу.
Взгляните на Nim, который является компилируемым языком согласно википедии и имеет некоторый синтаксис, знакомый Python. Я не думаю, что он полностью выпущен. Однако вы все еще можете получить это.
Он даже позволяет вам кодировать на C, он также может взаимодействовать с Lua и интерпретаторами Python. Nim - это статически типизированный императивный язык программирования, который пытается дать программисту максимальную мощность без ущерба для эффективности времени выполнения. Он имеет нулевые накладные итераторы и работает путем компиляции в C. Даже код C++ может быть даже сгенерирован с его помощью.
Вы можете получить интегрированную среду разработки Aporia по адресу: https://github.com/nim-lang/Aporia https://en.wikipedia.org/wiki/Nim_(programming_language)
Примеры Hello World программы просто так:
echo "Hello World!"
Как насчет Скала? Он скомпилирован в байт-код JVM и имеет множество функций, обычно присутствующих в скриптовых (динамических) языках (анонимные функции, функции высшего порядка, продолжения с разделителями, сопоставление с образцом, вывод типов, черты, миксины...). Посмотрите на страницу википедии. Больше подробностей.
Nim - это новый язык высокого уровня с полным набором функций низкого уровня, если вы хотите их использовать. Используемый как язык высокого уровня, он, по-видимому, довольно безопасен. У этого также есть хорошо развитые функциональные особенности программирования. Он "переносится" в C, затем в двоичные файлы. (Я думаю, что это идеальный язык - наконец-то!) См.: http://nim-lang.org/0.11.3/nims.html
Если вам просто нужен очень простой язык высокого уровня, который "переносится" на C, то бинарные файлы есть в Genie: https://wiki.gnome.org/action/show/Projects/Genie?action=show&redirect=Genie