LINUX.ORG.RU

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

 


0

2

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

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

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

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

★★★★★

Последнее исправление: helios (всего исправлений: 1)
Ответ на: комментарий от AIv

«То ли я - дурак, то ли лыжи не едут». Когда мы говорим int, double и т.д. в С, мы понимаем, что за этим стоят байты, в которых как-то представлены числа (стандарты по реализации находятся в том числе и в IEEE). Если взять скриптовый, к примеру, язык, то многие детали реализации сокрыты от программиста. Тут уже не так важно: целое число или нет. А вот если тут не число, а строка, бывают проблемы.

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

Когда мы говорим int, double и т.д. в С, мы понимаем, что за этим стоят байты, в которых как-то представлены числа

А Вы понимаете, что скажем число и порядок этих байт зависит от архитектуры?

Если взять скриптовый, к примеру, язык, то многие детали реализации сокрыты от программиста.

Тем не менее в питоне int - это вполне С-шный int. Но это неважно, мы говорили о типизации в питоне. И типизация, в т.ч. неявное приведение типов, никак от реализации не зависят а прописываются в стандарте языка. И основнй то посыл был - ну нету, нету в питоне строгой типизации. Так же как и в С++. Плохо ли это или хорошо - отдельный вопрос, важно то что ее нету, поскольку есть неявное приведение типов, наличие которого, внезапно, - от железа и IEEE ну никак не зависит;-)

AIv ★★★★★
()
Ответ на: комментарий от AIv
>>> from __future__ import division
>>> 3/2
1.5
>>> 3//2 # костыль для тех, кому нужно прежнее поведение
1
>>> 

попоследовательнее в своих заблуждениях

Следовать за попой уж не стану, увольте )

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

О да, я так ждал когда кто нить это вспомнит...

>>> L = range(10)
>>> L[3/2]
1
>>> from __future__ import division
>>> L[3/2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not float
>>> 
я уж и не знаю что хуже. Но попытка ублажить неасиляторов с этим возвратом флота при делении двух интов ИМНО может иметь ужастные последствия. Для меня так это один из основных аргументов отказа от третьего питона.

И да, Вы и правда считаете что возврат флота при делении двух интов есть пример строгой типизации?;-)

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

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

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

У тебя какое-то очень смешное и убогое представление о том, что такое «скриптовый язык».

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

>>> L[3/2]


Сразу захотелось уедарить.
Это не аргумент.
В реальном коде этого либо не должно быть вообще, либо быть в виде
L[int(3/2)].
Кроме того мы же знаем, что директивы «from __future__ import ...» обязаны находиться на первой значащей строке модуля, сразу посмотрел и намотал на ус.

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

В реальном коде этого либо не должно быть вообще, либо быть в виде

L[int(3/2)]

Это с какого перепугу надо приводить к инту то, что и так гарантированно интом являлось пока кому то в голову не пришло что это дескать слишком сложно O_O?

А ничего, что

>>> -3/2
-2
>>> -3./2
-1.5
>>> int(-3./2)
-1
Эти ребята поломали обратную совместимость, причем поломали те места которые в улучшении ну совсем никак не нуждались, а то что реально надо было улучшать (и что нельзя было улучшить не сломав обртную совместимость) оставили.

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

директивы «from __future__ import ...» обязаны находиться на первой значащей строке модуля

Вставил такую строку, и дальше патчишь ВЕСЬ код в поисках операторов деления. Удачной отладки!

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

Эти ребята поломали обратную совместимость

Какая обратная совместимость?

ActivePython 2.7.2.5 (ActiveState Software Inc.) based on
Python 2.7.2 (default, Jun 24 2011, 09:10:09) 
[GCC 4.0.2 20051125 (Red Hat 4.0.2-8)] on linux2
Type "copyright", "credits" or "license()" for more information.
>>> 3/2
1
>>> 
То есть во второй ветке всё работает привычно (безотносительно хорошо или нет). А в 3k и так много чего поломано, деление это мелочь.

А ничего, что

Ничего. Enjoy your coding style :P

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

Так я про 3ю и говорю. Там поломали много чего, да все не то.

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

AIv

И да, Вы и правда считаете что возврат флота при делении двух интов есть пример строгой типизации?;-)

Я так считаю. И вообще, оператор деления целочисленного должнен отличаться от деления на флоатах.

unC0Rr ★★★★★
()

катимся ... к скриптовым языкам со строгой типизацией

Предсказуемо. Количество и размер готовых компонент растёт, т.ч. всё эффективнее становится склеивать готовые велосипеды вместо разработки своих. В таком случае без строгой типизации можно ожидать довольно смешных результатов. Правда, в этом случае, хороша была бы статическая, но она без адекватного вывода типов сильно раздражает, т.ч. пока отстаёт.

компилируются в байт-код, исполняющийся на виртуальной машине

А это либо лень либо крайний случай динамического связывания. Оба имеют свои преимущества, а скорость процессоров часто позволяет ими злоупотреблять.

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

Да это ж чистая содомия, почти как в плюсах!

чистая содомия - это Си, всё может приводиться ко всему, ограничений практически никаких

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

неявно?

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

char string1[] = {'a', 'r', 'g', 'h', '!', '\0'};
string1[0] += 12;
std::cout << string1 << std::endl;

char* string2 = "lalala";
string2 = (char*)100500;
shty ★★★★★
()
Ответ на: комментарий от qnikst

ну так мы не за динамику/статику, а за строгость/нестрогость, вроде

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

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

Вот я, например, сейчас сижу и разбираю неработающий драйвер ПЗС-камеры на (!!!) плюсах! Это каким же надо быть упоротым, чтобы на плюсах драйвера писать? (а не работает драйвер по ряду не сильно понятных мне причин - кода слишком дофига, поэтому выдергиваю лишь нужный, но он почему-то сам по себе работает - а в их сборке - фигвам).

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

Сами по себе - ничем

ну дык

но когда всякие упоротые

эти куда ни полезут - везде так получится, думаешь если тот кто писал драйвер взял бы Си получилось бы лучше? :)

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

думаешь если тот кто писал драйвер взял бы Си получилось бы лучше? :)

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

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

«Мне пришлось бы меньше лишних телодвижений делать.»

ну и кто тебе виноват что __ты__ С++ не знаешь и поэтому не можешь решить задачу эффективно?

//Конечно же С++ виноват, всё он проклятый. Если бы не С++ то во всём мире была бы только дружба и веселье.

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

ну и кто тебе виноват что __ты__ С++ не знаешь и поэтому не можешь решить задачу эффективно?

Да у меня просто нет ни одной задачи, где нужны были бы «плюсы».

Если бы не С++ то во всём мире была бы только дружба и веселье.

☺ ну, иногда и «плюсы» нужны.

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

Да у меня просто нет ни одной задачи, где нужны были бы «плюсы».

это понятно, и это нормально, непонятно только причём тут плюсы и содомиты

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

Согласен: добавить в лоркод теги [маразм], [троллинг], [тупняк], [нытье], [вонь]…

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