Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.133.228] |
|
Страницы: (31) [1] 2 3 ... 30 31 ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Вот, решил я тут написать идеальный язык программирования. Да, я знаю, что такого не бывает, но душа, как говорится, просит. Из всех языков, которые я за свою жизнь встречал, в наибольшей степени на роль идеального подходит язык Форт. Я уже долго хочу написать статью, в которой бы излагались все его преимущества, а пока что могу посоветовать хорошую статью с сайта forth.org.ru.
Существующие реализации Форта мне не нравятся, потому, собственно, я и затеял этот проект. А вот, собственно, и он: http://www.sources.ru/wiki/doku.php?id=projects:quickforth . Меня интересует мнение, так сказать, практикующих программистов: что вам не хватает в существующих языках программирования и как, по вашему мнению, должен выглядеть идеальный язык? |
Сообщ.
#2
,
|
|
|
Если этот язык будет выглядеть так:
macro : nip $04c683 3, ; | add esi, 4 | : dup $fc4689 3, $04ee83 3, ; | mov [esi-4], eax; sub esi, 4 : dup $04ee83 3, $0689 2, ; | sub esi, 4; mov [esi], eax : drop $068b 2, m: nip ; | mov eax, [esi]; nip | : drop $068b 2, $04768d 3, ; | mov eax, [esi]; lea esi, [esi+4] - slow! то я лучше пойду курить асм до полного просветления Добавлено но мне это чертовски тот же асм напоминает ... можно пример твоего языка? |
Сообщ.
#3
,
|
|
|
Цитата wormball @ Угу. Идеальных языков не было, нет и никогда не будет. Впрочем, никто не мешает заняться поисками философского камня. Найти его, конечно, не удастся, зато узнаешь много нового. Да и потом, язык -- ничто. Библиотеки -- всё.Да, я знаю, что такого не бывает Цитата wormball @ Думаю, для прикладных целей -- это чистый функциональный язык, типа Haskell (хочу заняться его изучением в ближайшее время). Lisp тоже хорош, не смотря на скобки. FP довольно забавная штучка с его комбинирующими формами. как, по вашему мнению, должен выглядеть идеальный язык? |
Сообщ.
#4
,
|
|
|
Структурированный ASM с нормального вида циклами, условиями
|
Сообщ.
#5
,
|
|
|
Идеальность языка -- для меня это его универсальнось. Сделать эо не возможно по определению, т.к. задачи бывают совершенно разные. Даже в одном случае нужен функциональный язык, в другом -- императивный. Можно, конечно, всё зафигачить в один, но это всё равно что иметь у себя на даче инструмент, к. может быть и молотком, и лопатой, и топором...
|
Сообщ.
#6
,
|
|
|
Идеальный язык программирования - Русский матерный
|
Сообщ.
#7
,
|
|
|
Цитата Идеальный язык программирования - Русский матерный На самом деле, идеальным яп м.б. только для узкого класса задач |
Сообщ.
#8
,
|
|
|
идеальный язык, имхо - это объединение Бейсика, Си и Ассемблера...
т.е. этот язык должен допускать как упрощённое написание типа бейсика, (т.е. без типизирования пересенных, декларирования инклюдов и т.п), так и более сложные конструкции в стиле Си... а в случае необходимости и прямые ассемблерные вставки... Меня лично в Сях раздражает, что для простой задачи необходимо жёстко описывать кучу вспомогательных действий... А писать что-то большое на асме - это вообще труба... Зато что-то быстрое на асме - рулит... Если вкратце - то идеальный язык должен быть эшелонирован. типа, хочу - напишу msgbox 'hello world'... хочу больше контроля за этим процессом - буду юзать апишный вызов с доп.параметрами... |
Сообщ.
#9
,
|
|
|
Выгрузил таки апрельскую версию. Скоро, наверное, начну активно дописывать.
Цитата BlackRabbit @ Структурированный ASM с нормального вида циклами, условиями Ну, в двух словах, Форт - это именно такой язык, то есть его команды линейно транслируются в машинные коды. Но, в отличие от ассемблера (даже от макроассемблера), он обладает неограниченными возможностями к расширению - то, что называют словом "метапрограммирование", причём оно составляет саму сущность языка, а не является сложной надстройкой. Цитата Monty @ macro : nip $04c683 3, ; | add esi, 4 | : dup $fc4689 3, $04ee83 3, ; | mov [esi-4], eax; sub esi, 4 : dup $04ee83 3, $0689 2, ; | sub esi, 4; mov [esi], eax : drop $068b 2, m: nip ; | mov eax, [esi]; nip | : drop $068b 2, $04768d 3, ; | mov eax, [esi]; lea esi, [esi+4] - slow! Так это низкоуровневые определения, т. е. будучи однажды определены, они избавляют от программирования в машинных кодах. А вертикальная черта - это начало комментария. Обычные скобки () тоже ограничивают комментарий. Вот пример высокоуровневой программы (отображает римские цифры): | roman numbers create ones 'I 1, 'X 1, 'C 1, 'M 1, create fives 'V 1, 'L 1, 'D 1, var rank : typeone ones rank @ + c@ emit ; : typefive fives rank @ + c@ emit ; : typeten ones rank @ + 1+ c@ emit ; : typeones for typeone next ; : typefives ( n -- ) dup if 1 = if typefive else typeten then else drop then ; : typedigit ( div mod -- ) dup <0 if typeone drop typefives else swap typefives typeones then ; : digit ( n -- ) 5 /mod swap dup 4 = if drop 1 + -1 then typedigit ; : incrank 1 rank +! ; : decrank rank @ if 1 rank -! then ; : roman ( n -- ) 10 /mod dup if incrank roman decrank else drop then digit ; : toroman 0 rank ! roman space ; На самом деле ничего страшного, просто непривычно. Зато одно из главных преимуществ Форта - то, что он фактически принуждает к хорошему стилю программирования. Недостаток - нельзя писать выражения со скобками вроде (a+b)*c, но после некоторой тренировки это перестаёт быть препятствием. К тому же, если приспичит, можно и поддержку формул реализовать. Цитата n0rd @ Идеальный язык программирования - это тот, в котором ты описываешь задачу, а компилятор тебе ее сам решает. Ну это уже, извините, искусственный интеллект. Вот завершится мой гиперпроект ("вырастим искусственный интеллект") успехом, вот тогда это будет. Кстати, реализовывать я его хочу именно на этом языке. Цитата Relan @ Думаю, для прикладных целей -- это чистый функциональный язык, типа Haskell (хочу заняться его изучением в ближайшее время). Lisp тоже хорош, не смотря на скобки. FP довольно забавная штучка с его комбинирующими формами. Сколько ни читал про функциональные языки, понял только одно - писать в функциональном стиле можно и на императивных языках. Кстати, Форт как раз благоприятствует функциональному стилю. Правда, типизация в нём отсутствует как класс, что с лихвой компенсируется несравненным удобством отладки. Может быть, в функциональных языках есть что-то, чего я про них не знаю? Цитата Змей(Чёрный) @ Меня лично в Сях раздражает, что для простой задачи необходимо жёстко описывать кучу вспомогательных действий... А писать что-то большое на асме - это вообще труба... Тогда Форт - для тебя. Программы на Форте в среднем в 2-6 раз (а то и больше) короче, чем аналогичные программы на традиционных языках. Цитата Relan @ Да и потом, язык -- ничто. Библиотеки -- всё. Вот поэтому и появляются до сих пор монстры на Фортране, которые даже на Паскале могли бы быть в 2-3 раза короче. Цитата Cr@$h @ Даже в одном случае нужен функциональный язык, в другом -- императивный. Можно пример? |
Сообщ.
#10
,
|
|
|
Мне тоже форт нравится. Правдо я про него только читал и в глаза не видел.
Хочу язык программирования типа Си или Паскаль, асм вставки обязательны. не идеалестические а практические реализации. Но чтобы макросы были такие, чтобы на них можно было сделать все и втоже время они не должны быть тяжелыми. И еще должна быть большая библеотека макросов, которая реализовывала все возможные вареанты написания тепичных процедур. В конце концов такой язык должен свестись к тому, что ты пишешь, что хочешь получить, а компилятор сам строит программу. И чем меньше будет описание тем ближе такой компилятор будет похож на Искуственный Интелект. |
Сообщ.
#11
,
|
|
|
Цитата Pavia @ Мне тоже форт нравится. Правдо я про него только читал и в глаза не видел. Вообще наиболее полно всё величие Форта ощущается, когда на нём напишешь программу хотя бы в 1000 строк, а ещё лучше сделаешь собственную Форт-систему. Форт характерен тем, что чем дольше на нём пишешь, тем меньше усилий на это затрачивается - фактически весь написанный тобой код не лежит мёртвым грузом, как это часто бывает, а очень сильно облегчает труд программиста. Это то, что называется словом "повторная используемость кода" и является неотъемлемой частью хорошего стиля программирования. Цитата Pavia @ Но чтобы макросы были такие, чтобы на них можно было сделать все и втоже время они не должны быть тяжелыми. В Форте используются не макросы, а немного другая технология, но на её основе можно сделать всё и даже больше. |
Сообщ.
#12
,
|
|
|
Цитата wormball @ Это не возможно по определению. Если язык позволяет программировать в чисто функциональном стиле, то он называется функциональным ЯП (возможно с императивными элементами). Сколько ни читал про функциональные языки, понял только одно - писать в функциональном стиле можно и на императивных языках. Цитата wormball @ Может быть. Когда нам читали курс декларативного прораммирования -- я им абсолютно не проникся. Но сейчас я серьезно изучаю его и многое проясняется. Аппликативная вычислительная модель математически совершенна и очень красива. Ее надо просто понять. Может быть, в функциональных языках есть что-то, чего я про них не знаю? Цитата Вот она, основная проблема декларативного программирования -- "они не понимают". Функциональное программирование прекрасно, оно -- радость созерцания. Как только кто-то поймет функциональное программирование, он немедленно перейдет к нему. Массы, которые застряли в устаревшем императивном и объектно-ориентированном программировании, делают это из слепого предубеждения. Они просто не понимают. Цитата Pavia @ Макросы в Лиспе -- очень мощная вещь. Но чтобы макросы были такие, чтобы на них можно было сделать все и втоже время они не должны быть тяжелыми. Цитата Pavia @ Собственно, это и есть то, чем занимается декларативное программирование. Программа говорит "что делать" вместо "как делать". В конце концов такой язык должен свестись к тому, что ты пишешь, что хочешь получить, а компилятор сам строит программу. Например, так вычисляется гипотенуза по т. Пифагора на FP: def pifagor = sqrt . + . @ sqr def simple = and . @ % . distl . <id, tl . iota . dec . id> int simple(int n) { int i; for (i = 3; i < n; i++) if (n % i) return 0; return 1; } Цитата Pavia @ Это уже из области фантастики. Я бы не рискнул писать на языке, транслятор которого пытается угадать, что я там имел в виду. И чем меньше будет описание тем ближе такой компилятор будет похож на Искуственный Интелект. |
Сообщ.
#13
,
|
|
|
Relan, а это уже интереснее ... когда дают сравнение
ps. я именно сравнение и хотел |
Сообщ.
#14
,
|
|
|
Цитата Relan @ Например, так вычисляется гипотенуза по т. Пифагора на FP: def pifagor = sqrt . + . @ sqr Кстати, на Форте это будет выглядеть так: : pifagor fsqr fswap fsqr f+ sqrt ; , а на ФП я не очень понял запись. Что в интернете можно почитать про функциональное и декларативное программирование? Цитата Relan @ Функциональное программирование прекрасно, оно -- радость созерцания. Как только кто-то поймет функциональное программирование, он немедленно перейдет к нему. Массы, которые застряли в устаревшем императивном и объектно-ориентированном программировании, делают это из слепого предубеждения. Они просто не понимают. Вот она, основная проблема декларативного программирования -- "они не понимают". Если я ничего не путаю, функциональное и декларативное программирование - две большие разницы? Кстати, если кто-то ещё не понял. Я не являюсь фанатичным поклонником Форта и затеял этот разговор не с целью заставить всех перейти на Форт, а именно выяснить, каким должен быть идеальный язык и какие языки больше всего претендуют на это звание. Просто пока я конкурентов Форту не вижу. Возможно, когда я прочитаю про функциональное/декларативное программирование, я изменю своё мнение, хотя это маловероятно. |
Сообщ.
#15
,
|
|
|
wormball
Напиши программу на форте которая прочитает текстовый файл "text1.txt", создаст "text2.txt" и запишет в него все слова но задом наперед. т.е. text1.txt содержит "asd dsa" к примеру -- выход "dsa asd" в text2.txt .. ты говоришь просто что на форте все записи короче выходят... вот сравнимс.. Добавлено Цитата wormball @ каким должен быть идеальный язык и какие языки больше всего претендуют на это звание. 1) Хорошая стандартная библиотека 2) Понятный короткий синтаксис 3) Возможности обобщенного программирования 4) Возможность АСМ вставок. Чем форт лучше С++? |