LINUX.ORG.RU

[тренды][ЯП] Скриптовая статика.

 


0

2

Когда-то давно были низкоуровневые языки и скриптовые (деление, конечно спорное, но мы ведь друг друга поняли?). Однако, чем дальше - тем больше, в мейнстрим лезут гибриды. Скриптовые языки всё больше тяготеют к статике (python, к примеру), да и всё больше шума в спорах, мол оно надо. Нескриптовые же перенимают фишки первых (например, var в C# - появляется динамическая типизация на этапе компиляции). И все в машинах - .Net, JVM и т.д. Пончик-программисты нарадоваться не могут на свой linq. И т.д.

Итого, к чему мы катимся (имеется ввиду не нас с вами, а мейнстрим и программирование) - к скриптовым языкам со строгой типизацией, которые компилируются в байт-код, исполняющийся на виртуальной машине.

При чём движение есть с обеих сторон.

// блин, это всё же надо было в Talks :(

★★★★★

Последнее исправление: helios (всего исправлений: 1)

Если бы еще эти ваши стековые ВМ не были такими тормозными и прожорливыми до оперативы...

anonymous
()
Ответ на: комментарий от anonymous

Если учесть, что я - любитель Perl, то «наши» ВМ - скорее регистровые :)

helios ★★★★★
() автор топика

... всё больше тяготеют к статике (python, к примеру)

Python имеет восходящий тренд также, как PHP и Ruby.

anonymous
()
Ответ на: комментарий от schizoid

Сверить своё понимание с вашим. Всё скатывается к скриптам со строгой типизацией? Как-то грустно мне от того...

helios ★★★★★
() автор топика

Катимся мы обратно к лиспу

anonymous
()
Ответ на: комментарий от korvin_

Вопрос-то в чем?

Как всегда: «Кто виноват?» и «Что делать?».

helios ★★★★★
() автор топика

var в C# - появляется динамическая типизация на этапе компиляции

Это не динамическая типизация, это неявное указание типа.

tensai_cirno ★★★★★
()
Ответ на: комментарий от tensai_cirno

Это не динамическая типизация, это неявное указание типа.

Ну само собой. Потому я и обозвал это «динамическая типизация на этапе компиляции» (коей, вроде бы, не существует). Просто выглядит до боли знакомо...

helios ★★★★★
() автор топика
Ответ на: комментарий от helios

Ну само собой. Потому я и обозвал это «динамическая типизация на этапе компиляции» (коей, вроде бы, не существует). Просто выглядит до боли знакомо...

Не пишите бред, это называется «Автоматический вывод типов» в языке со строгой статической типизацией и никак иначе.

Norgat ★★★★★
()
Ответ на: комментарий от helios

Python - язык со строгой динамической типизацией.

Дяденька, а мне всегда казалось, что СТРОГАЯ типизация подразумевает запрет на неявное приведение типов. А в питоне есть метод __coerce__, да и вообще читаем Гвидо и Ко, стр 161:

Бинарные операции
Для того, чтобы вычислить выражение x op y, предпринимаются следующие шаги
(__op__() и __rop__() — методы, реализующие оператор op, например, __add__()
и __radd__() реализуют оператор +):
1. Если x является строкой и op является оператором форматирования (%), выпол-
няется форматирование и все остальные шаги пропускаются.
2. Если x является экземпляром класса:
(a) Если для x определен метод __coerce__(), x и y заменяются зна-
чениями, содержащимися в кортеже x.__coerce__(y); если же метод
__coerce__() возвращает None, перейти к пункту 3.
(b) Если после преобразований ни x, ни y не является экземпляром, перейти к
пункту 4.
(c) Если для x определен метод __op__, вернуть x.__op__(y), в противном
случае восстановить значения x и y, которые были перед выполнением пункта
2a.
3. Если y является экземпляром класса:
(a) Если для y определен метод __coerce__(), x и y заменяются зна-
чениями, содержащимися в кортеже x.__coerce__(y); если же метод
__coerce__() возвращает None, перейти к пункту 4.
(b) Если после преобразований ни x, ни y не является экземпляром, перейти к
пункту 4.
(c) Если для y определен метод __rop__, вернуть y.__rop__(x), в противном
случае восстановить значения x и y, которые были перед выполнением пункта
3a.
4. (a) Если x является последовательностью и op — + или *, выполняется объеди-
нение и размножение соответственно.
(b) В противном случае оба операнда должны быть числами. По возможности они
приводятся к общему типу, и для этого типа выполняется соответствующая
операция.

И где Вы тут нашли строгую типизацию? Да это ж чистая содомия, почти как в плюсах!

AIv ★★★★★
()
Ответ на: комментарий от helios

Даже если учесть то, что ты действительно _понял_, что написал в ОПе, причина твоих волнений всё равно непонятна. Тебе кто-то запрещает использовать скриптовый язык с нужной тебе типизацией?

schizoid ★★★
()

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

CrossFire ★★★★★
()
Ответ на: комментарий от anonymous

anonymous

Но jit-компилируемые в натив относительно быстры, v8 например.

Vala еще есть из интересного, однако, скажем в играх, или там во встраиваемой технике, никуда не деться, да и ОС на чем-то писать надо, чтоб оно не тормозило как Ubuntu Software Center.

CrossFire ★★★★★
()
Ответ на: комментарий от schizoid

Есть вариант круче! Можно использовать язык, который не запрещает, но и не требует указывать тип переменной!

#!/usr/bin/perl6

my Int $int = 5;
my Rat $rat = 3.1415;

"Int is {$int}".say;
"Rat is {$rat}".say;

my $wtf = 0.102;

"Yay! You don't have to specify the type!\n{$wtf}".say;
"Let's add all these variables:\n{$int+$rat+$wtf}".say;
kuu@Cloudsdale:~$ ./test.pl 
Int is 5
Rat is 3.1415
Yay! You don't have to specify the type!
0.102
Let's add all these variables:
8.2435
IceAlchemist
()

Скриптовые языки всё больше тяготеют к статике (python, к примеру)

Чушь.

Итого, к чему мы катимся (имеется ввиду не нас с вами, а мейнстрим и программирование) - к скриптовым языкам со строгой типизацией, которые компилируются в байт-код, исполняющийся на виртуальной машине.

К сожалению, ни к чему такому мы не катимся.

tailgunner ★★★★★
()
Ответ на: комментарий от Virtuos86

Числа со строками etc можно складывать безнаказанно

целые с плавающими можно складывать безнаказанно? Да. Значит типизация нестрогая

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

Ерундень. Складывать число с числом это опупеть как ужасно. Скорее всего это чисто практическое допущение дизайна языка. Его ведь не штангисты писали. К тому же, если в это называть нестрогой типизацией, то как назвать типизацию в PHP, например, или в Perl? (да, перевожу стрелки)

Virtuos86 ★★★★★
()

Итого, к чему мы катимся

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

redixin ★★★★
()
Ответ на: комментарий от Virtuos86

Складывать число с числом это опупеть как ужасно

для компьютера это совсем разные типы, то есть абсолютно

Его ведь не штангисты писали.

лучше бы его писали штангисты

lazyklimm ★★★★★
()
Ответ на: комментарий от redixin

гигабайты и гигагерцы гораздо дешевле чем квалифицированные человеко-часы. гораздо.

Зависит от того, сколько гигабайт и сколько часов.

tailgunner ★★★★★
()

«Динамическая типизация» «на этапе компиляции» - ты, балбес, чего курил? Тебя мамка в детстве головой вниз уронила, что ли?

var в шарпе или auto в C++ это совершенно статический вывод типов.

В общем, не лез бы ты про языки рассуждать. Неграмотен. Поучись сначала, а потом уже свое мнение имей.

anonymous
()
Ответ на: комментарий от Virtuos86

Числа со строками etc можно складывать безнаказанно? Нет. Значит типизация строгая.

Складывать ладно... ДЕЛИТЬ вот число на число можно:

>>> 3/2
1
>>> 3./2
1.5
ахренеть какая строгая типизация.

PS Вааще то я не считаю, что отсутствие строгой типизации это плохо, явно приводить типы задолбаисся. Но - давайте таки будем построже с терминами и попоследовательнее в своих заблуждениях, да?;-)

AIv ★★★★★
()
Ответ на: комментарий от anonymous

«Динамическая типизация» «на этапе компиляции» - ты, балбес, чего курил?

Вам бы манер... Ну да ладно, это было высказано относительно того, как это выглядит: программист не пишет явно тип переменной, он выводится сам. Вроде и тип не указывал, а он определился.

var в шарпе или auto в C++ это совершенно статический вывод типов.

КСЖ... А я думаю, как шайтан-машина VS мне говорит что за тип имелся в виду.

В общем, не лез бы ты про языки рассуждать.

Вам же, посоветую, не общаться с людьми, пока не станете хоть сколько-то вменяемыми.

helios ★★★★★
() автор топика
Ответ на: комментарий от AIv

ахренеть какая строгая типизация.

Вы о разном говорите. Можно воспринимать эту концепцию на уровне железа, а можно на прикладном. На прикладном «строгость» уменьшает проверки входных данных (само собой не полностью). Что полезно - меньше возможность «прозевать».

helios ★★★★★
() автор топика
Ответ на: комментарий от helios

Ого, какое кисо обидичвое. Объясняю популярно: ты, лошара, посмел выступать на тему, в которой даже поверхностно не разбираешься. И тебе потребуется года три-четыре упорного труда, чтобы начать хотя бы немного разбираться. А до тех пор ты не человек, ты чмо, если имеешь наглость высказываться, осознавая свою некомпетентность.

Таких ублюдков, как ты, совершенно необходимо наказывать. Как к людям к вам нельзя относиться, и без того зараза воинствующего дилентантизма готова человечество угробить.

anonymous
()
Ответ на: комментарий от helios

программист не пишет явно тип переменной, он выводится сам

А в ML и Haskell тогда тоже «динамическая» типизация, да? Посмешил!

anonymous
()
Ответ на: комментарий от AIv

А откуда тут вдруг взялся уровень железа?

Ну, если мы говорим о том, что числа бывают разных типов - мы привязываемся к железу и IEEE. Если от этого абстрагироваться, то есть просто «числа». Часто полезно разделять числа и строки, дабы не было недоразумений.

«Не прозевать» - это, скорее, прикладной подход.

helios ★★★★★
() автор топика
Ответ на: комментарий от anonymous

воинствующего

Анон, под «воинствующего» тут скорее подходишь ты. Чмокай, не чмокай, а сколь умным ты себя бы не считал, всё равно выглядишь дураком.

helios ★★★★★
() автор топика
Ответ на: комментарий от helios

Ну, если мы говорим о том, что числа бывают разных типов - мы привязываемся к железу и IEEE.

O_O упал пад кресло-качалку... скажите пожалуйста, а как в железе и IEEE реализованы комплексные числа питона?

А как в железе и IEEE реализованы строки?

AIv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.