LINUX.ORG.RU
ФорумTalks

Можно ли создать единый язык программирования высокого уровня для всего?

 


1

2

Сразу оговорюсь, что я не программист.

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

Чисто в теории можно ли создать язык программирования, который будет пригоден и для низкоуровневой работы (вместо языка C, например, для разработки ядра), и для написания прикладного ПО и скриптов?

Например, в языке может присутствовать как статическая, так и динамическая типизация. Вроде что-то подобное есть в, прости, Г-споди, C#, там есть тип dynamic. В Qt есть класс QVariant. Можно сделать оговорку, что, если хотим компилируемый бинарник, то пользуемся только статическими типами.

Реально ли это? Чисто в теории. На практике однозначно не получится, так как это будет не замена существующих языков, а ещё один язык.


Ответ на: комментарий от soomrack

А с т.з. пользователя именно отсутствие указания типа это динамическая типизация

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

a = read_from_file(file); // String
b = a + 10; // Int
c = b + 3.14; // Real
print("File: ".a.", and result value: ".c."\n"); // Concat всего в строку

При этом программа не должна засегфолтиться, если a вдруг будет «Вася». Максимум насрать в warning, а то и просто проигнорить и считать такую a равной 0, ведь нормальная адекватная макака перед важной математической операцией с переменной проверит ее тип, типа if (is_int(a)) {b = a + 10}, если это важно.

PHP кстати в этом плане здорово упрощает человеческую жизнь, иначе бы половина кода наверное состояла из atoi() и itoa().

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

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

Ещё один любитель придумывать свои определения общепринятым терминам. То, что ты описал, — это неявное приведение типа и/или слабая типизация.

А то иначе можно было сказать, что какой-нибудь Python — это не динамически типизированный ЯП, а C — динамический.

PHP кстати в этом плане здорово упрощает человеческую жизнь, иначе бы половина кода наверное состояла из atoi() и itoa().

Разве что в helloworld-ах, на практике всё-таки обычно нужно парсить ввод явно руками и обрабатывать ошибки.

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

Ещё один любитель придумывать свои определения общепринятым терминам.

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

Разве что в helloworld-ах, на практике всё-таки обычно нужно парсить ввод явно руками и обрабатывать ошибки.

Нет, просто в листинге.

Давай проще. Берем любой существующий маломальски толстый код на любимом С. Пофиг чего, блокнота, гимпа, хромиума. Там используются преобразования типов?

Если да - значит динамическая типизация все же необходима и должна быть. Иначе бы, как я писал выше, в кодах «праффесианальных праграмистов на Сишечке» не было бы этой лапши из itoa\atoi.

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

ну вы же сейчас путаете динамическую/статическую типизацию и строгую/нестрогую типизацию

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

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

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

Это талант, напутать вообще все, и с умным видом учить других %)

MOPKOBKA ★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)