Имхо, компиляция по большому счету нужна только для проверки целостности проекта и релиза.
Существует ли язык который был бы статически типизированый, но его можно было бы просто запустить на выполнение без компиляции?
ЗЫ Или может я делаю что то не так и постоянная компиляция это добро?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Talk is cheap. Show me the code.
Re: Статическая типизация с режимом интерпретацией.
Здравствуйте, dotneter, Вы писали:
D>Существует ли язык который был бы статически типизированый, но его можно было бы просто запустить на выполнение без компиляции?
Здравствуйте, dotneter, Вы писали:
D>Имхо, компиляция по большому счету нужна только для проверки целостности проекта и релиза.
согласен. если компилятор не сдох во время трансляции, то мы уже у цели. осталось договориться с операционной системой, чтобы она не вешалась при запуске релиза.
D> Существует ли язык который был бы статически типизированый, D> но его можно было бы просто запустить на выполнение без компиляции?
выше уже сказали, что существуют интерпретаторы плюсов, правда с какой скоростью они будут работать и сколько ошибок выявлять — вопрос отдельный. а так — существует очень много верификаторов кода, статически отлавливающих явные и потенциальные ошибки, которые "прозевал" компилятор.
D> ЗЫ Или может я делаю что то не так и постоянная компиляция это добро?
трудно себе представить постоянную компиляцию даже маленькой программы в несколько тысяч строк, даже с учетом разбиения ее на кучу файлов. даже если это действительно компиляция, а не линковка.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re: Статическая типизация с режимом интерпретацией.
Здравствуйте, dotneter, Вы писали:
D>Существует ли язык который был бы статически типизированый, но его можно было бы просто запустить на выполнение без компиляции?
А зачем это нужно? Так мы переносим тормоза из стадии создания программы на стадию ее выполнения. Если в процессе создания мы ее часто запускаем и смотрим результаты работы, то выигрыша по времени не будет.
Re[2]: Статическая типизация с режимом интерпретацией.
Здравствуйте, D. Mon, Вы писали:
DM>А зачем это нужно? Так мы переносим тормоза из стадии создания программы на стадию ее выполнения.
Пишут же как то люди на динамически типизированых языках, у них там всегда такое состояние.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Talk is cheap. Show me the code.
Re[2]: Статическая типизация с режимом интерпретацией.
Здравствуйте, dotneter, Вы писали:
D>Имхо, компиляция по большому счету нужна только для проверки целостности проекта и релиза. D>Существует ли язык который был бы статически типизированый, но его можно было бы просто запустить на выполнение без компиляции?
"статически типизированый" — это когда проверки типизации производится при компляции. Если программу предполагается запускать без компиялции, то о статической типизации речи быть не может.
Re: Статическая типизация с режимом интерпретацией.
Здравствуйте, Lloyd, Вы писали:
L>"статически типизированый" — это когда проверки типизации производится при компляции. Если программу предполагается запускать без компиялции, то о статической типизации речи быть не может.
Примеры которые были приведены?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Talk is cheap. Show me the code.
Re[3]: Статическая типизация с режимом интерпретацией.
Здравствуйте, dotneter, Вы писали:
L>>"статически типизированый" — это когда проверки типизации производится при компляции. Если программу предполагается запускать без компиялции, то о статической типизации речи быть не может. D>Примеры которые были приведены?
А фик знает. Для меня "компиляция" — это трансляция из текста на определенном языке в машинный язык или в какой-то другой формат (байткод). Если маш. кода нет на выходе, то это уже не компиляция, а что-то другое, анализатор кода.
Re[4]: Статическая типизация с режимом интерпретацией.
Здравствуйте, Lloyd, Вы писали:
L>Если маш. кода нет на выходе, то это уже не компиляция, а что-то другое
Интерпретация. Очевидно что один и тот же код можно скомпилировать или синтерпретировать.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Talk is cheap. Show me the code.
Re[5]: Статическая типизация с режимом интерпретацией.
Здравствуйте, dotneter, Вы писали:
L>>Если маш. кода нет на выходе, то это уже не компиляция, а что-то другое D>Интерпретация.
Интерпретация — не антоним к компиляции. Тот же питон/перл компилируется (в байткод), но при этом программы интерпретируются, т.е. этап компиляции все равно присутствует. Думаю приведенные примеры хаскеля/окалма относятся к той же категории.
Re[6]: Статическая типизация с режимом интерпретацией.
Здравствуйте, Lloyd, Вы писали:
L>Интерпретация — не антоним к компиляции.
Я бы предпочел под компиляцией понимать стандартную вариант, когда анализируется весь код программы.
Интерпретация — выполнение программы построчно. Есть там дальше компиляция или нет, сугубо личное дело интерпретатора.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Talk is cheap. Show me the code.
Re[7]: Статическая типизация с режимом интерпретацией.
Здравствуйте, dotneter, Вы писали:
L>>Интерпретация — не антоним к компиляции. D>Я бы предпочел под компиляцией понимать стандартную вариант, когда анализируется весь код программы.
В какой момент должны отлавливаться ошибки типизации?
D>Интерпретация — выполнение программы построчно. Есть там дальше компиляция или нет, сугубо личное дело интерпретатора.
Выполнение — последний этап, дальше него ничего быть не может.
Re[8]: Статическая типизация с режимом интерпретацией.
Здравствуйте, Lloyd, Вы писали:
L>В какой момент должны отлавливаться ошибки типизации?
В момент интерпретации. И не отлавливаться, а падать с ошибкой.
D>>Интерпретация — выполнение программы построчно. Есть там дальше компиляция или нет, сугубо личное дело интерпретатора.
L>Выполнение — последний этап, дальше него ничего быть не может.
Дальше не после выполнения, а после прочтения строки кода.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Talk is cheap. Show me the code.
Re[9]: Статическая типизация с режимом интерпретацией.
Здравствуйте, dotneter, Вы писали:
L>>В какой момент должны отлавливаться ошибки типизации? D>В момент интерпретации. И не отлавливаться, а падать с ошибкой.
Понятно. Ну так это не статическая типизация. Вот цитата из википедии:
A programming language is said to use static typing when type checking is performed during compile-time as opposed to run-time.
Re[10]: Статическая типизация с режимом интерпретацией.
Здравствуйте, Lloyd, Вы писали:
L>Понятно. Ну так это не статическая типизация. Вот цитата из википедии: L>
L>A programming language is said to use static typing when type checking is performed during compile-time as opposed to run-time.
У нас есть ровно две кнопки.
1) Скоприлировать проект со статической проверкой типа.
2) Запустить программу и упасть в рантайме в случае чего.
Было приведено три языка с такой функциональностью, и я все не пойму что мы обсуждаем.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Talk is cheap. Show me the code.
Re[11]: Статическая типизация с режимом интерпретацией.
Здравствуйте, dotneter, Вы писали:
D>У нас есть ровно две кнопки. D>1) Скоприлировать проект со статической проверкой типа. D>2) Запустить программу и упасть в рантайме в случае чего. D>Было приведено три языка с такой функциональностью, и я все не пойму что мы обсуждаем.
Вы их проверили? Как минимум 2 из них не удовлетворяют вашим требования (ocaml и haskell):
test.ml:
print_int 0;
print_int "0";
Результат:
lloyd@lloyd-pc:~$ ocaml test.ml
File "test.ml", line 2, characters 10-13:
Error: This expression has type string but an expression was expected of type
int
test.hs:
main = do putStrLn "0"
putStrLn 0
Результат:
lloyd@lloyd-pc:~$ runghc test.hs
test.hs:2:19:
No instance for (Num String)
arising from the literal `0' at test.hs:2:19
Possible fix: add an instance declaration for (Num String)
In the first argument of `putStrLn', namely `0'
In the expression: putStrLn 0
In the expression:
do putStrLn "0"
putStrLn 0
Как видишь в этих примерах анализ всей программы перед запуском происходит, а не построчно.
Re[11]: Статическая типизация с режимом интерпретацией.
Здравствуйте, dotneter, Вы писали:
D>Было приведено три языка с такой функциональностью, и я все не пойму что мы обсуждаем.
Ответы приводились еще до уточнения вопроса. Реально там прога перед запуском быстро компилируется целиком в байткод и потом выполняется. Просто со стороны это похоже на интерпретацию (не надо отдельно компилять, а потом запускать), при этом есть статическая типизация.
Чистых интерпретаторов, которые не делают предварительной компиляции в байткод, сейчас почти не осталось. При этом многие интерпретируемые языки имеют динамическую типизацию и на этапе компиляции в байткод ошибки типов почти не отлавливают. Как вариант, близкий к запрашиваемому — старый Ruby (1.8.x) и утилиты статического анализа для него (типа DiamondBack Ruby).