|
|
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
Возникла задача написать что-то наподобие интерпретатора языка программирования. Как следствие - масса объектов, тип которых определяется в рантайме и которые не имеют между собой ничего общего. Сейчас это все работает на шаблонах С++ со специализациями, но выглядит довольно некрасиво. Посмотрел в сторону Smalltalk и Python - вроде бы короче и понятнее получится. Но оба являются интерпретируемыми языками, не проходят по требованиям заказчика. Подскажите, пожалуйста, хороший язык со слабой типизацие. -------------- Festina lente ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2010, 11:23:04 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
Не совсем понятно, что значит "на шаблонах". Шаблон - это всего лишь продвинутый вариант макроподстановки, при РАЗРАБОТКЕ ПО, а вам нужно иметь объект, динамически меняющий свой тип в RUNTIME. И эти две задачи (парадигмы) лежат в разных плоскостях. Поэтому вам нужно не искать языки с сильной/слабой типизацией а продумать архитектуру уже имеющихся наработок. Её вполне можно реализовать на С++, (если вы не боитесь трудностей конечно :) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2010, 11:41:25 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
C# статический, но начиная с версии 4.0 можно делать динамические переменные (см ссылка) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2010, 12:13:57 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
Mozok, Си -- довольно нестрогая и слабая типизация. однако исходя из Вашей фразы "тип которых определяется в рантайме" можно предположить, что Вы имели в виду динамическую типизацию. тогда Common Lisp, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2010, 21:11:12 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
Ну, судя по сравнению_языков_программирования и разделу "Типизация", ближе всех VB.net, вроде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2010, 21:34:03 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
BIONНу, судя по сравнению_языков_программирования и разделу "Типизация", ближе всех VB.net, вроде. Хотя, поддержу k0rvin по поводу CL. Не зря он там по центру стоит. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2010, 21:45:06 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
Не думаю, что это автору подойдет. Между С++ и CL есть качественный рывок который не всем может быть "по зубам". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2010, 22:17:48 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
maytonНе думаю, что это автору подойдет. Между С++ и CL есть качественный рывок который не всем может быть "по зубам". Сдается мне, что с Си на Лисп перейти труда не составит, понять его не сложно. Более того, на Лиспе много раз решались подобные задачи. Другое дело - что автор знает, чем владеет. Это тоже нужно учесть. Си - роды могут быть тяжелыми, плод может не выжить, тут все зависит от акушера :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2010, 23:30:18 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за ответы (отдельное спасибо BION за ссылку). .Net не подходит по ряду причин, главная из которых - необходимость ташить за собой весь рантайм. А Basic мне просто не нравится :). Lisp я-то знаю, но, если мне не изменяет память, размеры бинарей получается совсем недетские из-за необходимости встраивать лисп-машину. А так - да, он прекрасно подходит. Хуже, чем Smalltalk, но все равно хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2010, 10:29:36 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
MozokСпасибо всем за ответы (отдельное спасибо BION за ссылку). .Net не подходит по ряду причин, главная из которых - необходимость ташить за собой весь рантайм. А чем принципиально отличается рандайм лиспа от .Net ? Единый клик экзешника? Это не такая уж большая плата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2010, 11:01:23 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
MozokВозникла задача написать что-то наподобие интерпретатора языка программирования. Как следствие - масса объектов, тип которых определяется в рантайме и которые не имеют между собой ничего общего. Сейчас это все работает на шаблонах С++ со специализациями, но выглядит довольно некрасиво. Посмотрел в сторону Smalltalk и Python - вроде бы короче и понятнее получится. Но оба являются интерпретируемыми языками, не проходят по требованиям заказчика. Подскажите, пожалуйста, хороший язык со слабой типизацие. -------------- Festina lente Отвязно. Так известно у Python-а много реализаций, среди которых есть и с компиляцией (в т.ч. под JVM). Существование ещё и интерпретации - скорее плюс. Smalltalk вроде существует на своей виртуальной машине, в байт-код которой и компилируется. И хорошо бы спросить у заказчика - компиляция ему нужна с какого бока (а может быть - с какого перепоя, в зависимости от задачи с учетом мощи современных даже недорогих компов). (По первоположенностям интерпретация - тоже компиляция, но трансляция во ч.-л. выполняемое не всего кода в целом и сразу, а кусками при выполнении кусками же. И не факт, что интерпретация будет всегда заметно более ресурсозатратная, вялая, подвисающая, приторможивающая, ...). По задаче. То есть набор объектов как детский конструктор, а надязык нужен - для описания того, что нужно собрать? Тогда слабость типизации - это вопрос не надязыка. То есть может быть надязык так интерпретировать так, чтобы слабая типизация не была нужна? P.S. Это так вышло - что интерпретация попала на C++ - язык со слабой типизацией. Так видится сюжет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2010, 15:52:16 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
А еще не очень понятно, что значит компилируемсый - это для чего, для скорости? Вот, например, jit подойдет? Такое даже для javascript есть. Можно взять V8 , например какой-нибудь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 08:20:28 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
MozokВозникла задача написать что-то наподобие интерпретатора языка программирования. Как следствие - масса объектов, тип которых определяется в рантайме и которые не имеют между собой ничего общего.я наверное самый тупой из всех тупых - не пойму что значит тип определяется в рантайме? объект спрограммируйте , в коллекцию пихните по ссылке и меняйте его тип как хотите. в проперти VALUE можете возвращать любую "строку", которая будет обозначать ваш рантаймовый псевдотип. при чём тут вообще языки программирования? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 21:41:19 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
Хозяинне пойму что значит тип определяется в рантайме? это значит, что т.н. "тип переменной" будет определятся во время выполнения программы, а не задается на этапе компиляции. Хозяинпри чём тут вообще языки программирования? а что здесь при том? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 22:08:10 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
k0rvinХозяинне пойму что значит тип определяется в рантайме? это значит, что т.н. "тип переменной" будет определятся во время выполнения программы, а не задается на этапе компиляции.тип переменной Объект? да , это круто . позднее связывание - недосягаемая высота для большинства языков программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 22:16:34 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
Наверное CLIPPER - самый удачный пример компилятора без строгой типизации. Переменные вообще там не обьявляются, а тип по первому присваиванию устанавливается. Если X = "2" - то X принимает значение типа "строка", и уже следующая строка X = 2 вызовет Run Time Error - ошибка типа переменной. А если переменной вообще не было присваивания и её пытаются использовать в правой части оператора присваивания или как аргумент функции, то опять возникнет Run Time Error (потому что неприсовенная ни разу переменная имеет тип "U"- unknown). Если я правильно понял вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 22:16:51 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
Хозяинk0rvinХозяинне пойму что значит тип определяется в рантайме? это значит, что т.н. "тип переменной" будет определятся во время выполнения программы, а не задается на этапе компиляции.тип переменной Объект? да , это круто . почему сразу объект? Хозяинпозднее связывание - недосягаемая высота для большинства языков программирования. при чем тут позднее связывание? речь о динамической типизации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 22:58:12 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
VowkНаверное CLIPPER - самый удачный пример компилятора без строгой типизации. Переменные вообще там не обьявляются, а тип по первому присваиванию устанавливается. Если X = "2" - то X принимает значение типа "строка", и уже следующая строка X = 2 вызовет Run Time Error - ошибка типа переменной. А если переменной вообще не было присваивания и её пытаются использовать в правой части оператора присваивания или как аргумент функции, то опять возникнет Run Time Error (потому что неприсовенная ни разу переменная имеет тип "U"- unknown). Если я правильно понял вопрос. ты неправильно понял ответ. это пример не нестрогой типизации, а вывода типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 23:00:38 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
k0rvinХозяинk0rvinХозяинне пойму что значит тип определяется в рантайме? это значит, что т.н. "тип переменной" будет определятся во время выполнения программы, а не задается на этапе компиляции.тип переменной Объект? да , это круто . почему сразу объект?мда? k0rvinХозяинпозднее связывание - недосягаемая высота для большинства языков программирования.при чем тут позднее связывание? речь о динамической типизациио динамической типизации чего? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 23:03:09 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
Хозяинмда? угу Хозяинk0rvinпри чем тут позднее связывание? речь о динамической типизациио динамической типизации чего? :) топикстартер Возникла задача написать что-то наподобие интерпретатора языка программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 23:11:09 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
k0rvinтопикстартер Возникла задача написать что-то наподобие интерпретатора языка программирования. топикстартер Как следствие - масса объектов, тип которых определяется в рантайме и которые не имеют между собой ничего общего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 23:17:49 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
так объекты или что? если всё таки объекты - то возможность не объявлять их тип существует . даже в школьном барсике даже там такой необъявленный объект имеет нечёткий такой тип Object :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 23:19:49 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
топикстартер Как следствие - масса объектов, тип которых определяется в рантайме и которые не имеют между собой ничего общего.[/quot] ну! очевидно же, что ТС хочет динамической типизации! =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 23:19:54 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
k0rvinтопикстартер Как следствие - масса объектов, тип которых определяется в рантайме и которые не имеют между собой ничего общего. ну! очевидно же, что ТС хочет динамической типизации! =)не видел никогда C++ но уверен на 100% что позднее связывание там есть. объявляется объектная переменная - а какой именно объект к переменной привяжешь в коде - дело хозяйское :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 23:23:07 |
|
||
|
Языки-компиляторы без строгой типизации.
|
|||
|---|---|---|---|
|
#18+
Хозяинне видел никогда C++ но уверен на 100% что позднее связывание там есть. объявляется объектная переменная - а какой именно объект к переменной привяжешь в коде - дело хозяйское :)играл, не угадал ни одной буквы. try again! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2010, 00:01:42 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36608259&tid=1343711]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
270ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 588ms |

| 0 / 0 |
