LINUX.ORG.RU

FORH


0

0

пару вопросов по форту :) Стоит ли учить сейчас Форт? вникать и использовать его? :)

2. пишет ли кто-то еще на этом языке сейчас? :)

3. Насколько и чем отличаются стандарты форта? :)

4. Возможно ли на форте написать большой проект? :)

5. Возможно при программировании на форте вставлять ассемблерные вставки? :)

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

7. на АСМе можно полностью контролировать программу и т.д. на ФОрте тоже? насколько я понял, форт это как переносимый асм. или я неправильно понял? :)

:)

anonymous

> 5. Возможно при программировании на форте вставлять ассемблерные вставки? :)

да:)

> 6. Возможно ли обращаться к переменным в памяти? не к тем, которые локальные в стеке.

да: ! @ С! С@

dilmah ★★★★★
()

1. нет.
2. да.
3. да.
4. да.
5. да.
6. да.
7. да/нет/да.

engage
()

> Возможно при программировании на форте вставлять ассемблерные вставки? :)

При программировании на ассемблере вставлять ассемблерные вставки? Вы я смотрю большой оригинал...

// :(

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

>При программировании на ассемблере вставлять ассемблерные вставки?

Мсье не знает, что такое Форт :)

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

> Мсье не знает, что такое Форт :)

Да! =) не знает! объясните, друзья! =) Пожалуйста....

anonymous
()

>Стоит ли учить сейчас Форт? вникать и использовать его? :)

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

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

легче всего для меня писать на ассемблере, так как к нему привык, а всякие ЯВУ мне не нравятся... да и писать на них мне сложнее... C близкий к асму.... но... форт мне нравится своей таинственностью, расширяемостью и простотой (все это я вычитал в Нете, но надеюсь, это правда ;) )... да и к асму, мне показалось, что он достаточно близкий =))))

Если что-то не так говорю - поправьте плиз =)))

anonymous
()

0) Forth пишется с буквой t

1) Нет

2) Да.

3) От чего?

4) Нет

5) Да

6) Да

7) Ты понял неправильно. Для справки: программа полностью контролируется на любом языке.

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

> легче всего для меня писать на ассемблере

Это означает, что ты НИКОГДА ничего интересного не напишешь.

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

>> легче всего для меня писать на ассемблере

>Это означает, что ты НИКОГДА ничего интересного не напишешь.

У вас в детстве не было спектрума?!

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

Miguel:

> 3) От чего?

Друг от друга

> 4) Нет

а почему? =-O :((((

> 7) Ты понял неправильно. Для справки: программа полностью контролируется на любом языке.

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

а насчет буквы T - спешил я.... и случайно...

> Это означает, что ты НИКОГДА ничего интересного не напишешь.

эт почему? :) я взломал пару программ для себя. написал инфектор PE-файлов простенький =) кейлогер вчера написал, отсылающий отчеты мне на мыло =) еще пару троянов... загрузчик ОС простой...

но серьезные проекты на нем написать очень сложно... это и так понятно...

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

>Это означает, что ты НИКОГДА ничего интересного не напишешь.

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

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

>У вас в детстве не было спектрума?!

Спектрум - это игрушка.

2anonymous

>Только при пограммировании на асме ты можешь вручную давать имя секциям файла ;)

обалдеть!

>знаешь, какой будет в итоге выходной файл. ничего лишнего

любой нормальный компилятор может опртимизировать код по критерию размера бинарника

>управляешь регистрами процессора и т.д. код получается быстрым и компактным

преждевременная ручная оптимизация суть пустая трата времени

>в общем, понимаешь, как все работает...

для этого не обязательно писать на асме

>взломал пару программ для себя. написал инфектор PE-файлов простенький =) кейлогер вчера написал, отсылающий отчеты мне на мыло =) еще пару троянов... загрузчик ОС простой...

это игрушки

>но серьезные проекты на нем написать очень сложно... это и так понятно...

тогда о чём вообще речь?

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

> легче всего для меня писать на ассемблере [..]

All the world's VAX!

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

> обалдеть!

ога ;)

> любой нормальный компилятор может опртимизировать код по критерию размера бинарника

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

> преждевременная ручная оптимизация суть пустая трата времени

я не спорю. но это входит в полный контроль программы. а ты сказал, что на любом языке программа контролируется ;)

> для этого не обязательно писать на асме

конечно. но чтобы лучше все понять, то асм самое то! ;) ведь это запись машинного кода в более понятном состоянии :) а еще лучше научиться понимать машинный код. при написании компилятора, например.

> это игрушки

ессно =) но есть ведь и серьезные проекты.. просто их мало =) например, Menuet OS/Kolibri OS, FASM, RadASM, Fresh, ResED, WinASM, ASMEdit... ну в основном IDE разные....

> тогда о чём вообще речь?

а если есть модуль, который должен быстро работать? можно ведь некоторые модули на ассемблере писать, а остальное на ЯВУ ;)

дрова пишут иногда на АСМе =) на С, наверно, больше их пишут, но, думаю, если бы на асме они были написанные, работали бы быстрее ;) правда хз сколько бы они тогда писались....

ну а вообще ты прав, не от нефиг делать ведь ЯВУ придумали! :)

я просто сказал, что на асме мне удобнее всего писать =)

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

Miguel , а почему на четвертый вопрос ответ "Нет"? из-за того, что очень сложно?

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

> я не спорю. но это входит в полный контроль программы. а ты сказал, что на любом языке программа контролируется ;)

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

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

С вами полностью согласен. Только одно уточнение. Иногда кеш можно контролировать (на x86 ведь свет клином не сошелся).

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

>У вас в детстве не было спектрума?!

Сегодня пишут что-то общественно интересное для Спектрума? :)

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

>Вы для игрушки писать умеете?

Я несколько лет писал на ассемблерах 8080, Z80, PDP, 8086 и 80386.

Несколько лет плотно программировал на Фортах для упомянутых платформ.

Писал и ломал игры для Спекки, писал немного для демосцены времён DOS.

Сейчас являюсь разработчиком системы JBForth под JVM.

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

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

Ещё забыл: после Z80, у которого даже нет аппаратного целочисленного умножения, ассемблер 386 кажется высокоуровневым языком. По поводу портфолио: ничего обычного, нормальное программистское развитие. У меня форта и жвм не было, но для Спектрума писал, демки тоже были :)

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

> любой нормальный компилятор может опртимизировать код по критерию размера бинарника

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

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

>В качестве тренажёра для мозгов Спектрум - вещь очень замечательная.

... была 15 лет назад.

Сегодня есть гораздо более востребованные и замечательные для тренинга вещи. От КПК и мобильников до системного программирования по те же JVM и .NET :)

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

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

Я завязал с ассемблером, как только понял, что _в среднем_ компилятор делает более эффективный код, чем я. Да, в узких местах, пересчитав растактовки, можно сделать эффективнее вручную. Но не намного. А в среднем, при, казалось бы, достаточно эффективном программировании, ассемблерный код получается в итоге _медленнее_. Было это где-то во времена Pentium-1.

Ещё убило то, что растактовки постоянно менялись. Вплоть до 80386 для копирования и заполнения было эффективнее пользоваться строковыми операциями. На 486 и Pentium - вручную, циклом с косвенной адресацией. На P2 - опять строковые... А сегодня, в наш век разброда и шатания производителей и платформ? Да ну их нафиг, пусть об этом у разработчиков компилятора голова болит :)

...

Нет, если кому-то писать на ассмеблере просто fun - то ничего не имею против. Кто-то в наше время океан на плоту переплывает, кто-то самодельные велосипеды делает, кто-то на ассемблере пишет. Но я, всё же, предпочитаю получать fun в общественно полезных занятиях :D

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

> Свои процессоры почему не делаешь??

топикстартер, учи форт, будешь делать свои форт-процессоры.

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

> писал немного для демосцены времён DOS.

опа.. что, если не секрет? В команде какой-нибудь был?

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

> те же JVM и .NET :)

что вы всё про искусственные VM.. Есть в новом флеше нормальная VM на форте (и ничего не поделаешь, это же флешЪ), есть нормальные языки к этой VM -- тот же Neko http://haxe.org/doc/intro http://haxe.org/doc/features , на нём что-то пищут http://haxe.org/com/projects?lang=en

И ничего не поделаешь, там же форт унутри..

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

>опа.. что, если не секрет? В команде какой-нибудь был?

Гипербола, конечно. В смысле, что не для демосцены писал, а просто демо. Лепил на ассемблере всякие эффекты на тексты и музыку. Просто перед знакомыми повыпендриваться и в архивы софта, которым на Тушинском, а потом Митинском рынке торговали, свою рекламу прикладывать. Была такая мода в то время у тех, кто мог позволить :)

Я пытался в конце прошлого года найти старые свои сорцы, понастольгировать и как опенсорц выложить, там, что-то типа ассемблерного фреймворка под демки было, но так и не нашёл :) То ли погибли когда-то, то ли где-то очень глубоко в архивах...

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

> топикстартер, учи форт, будешь делать свои форт-процессоры.

гыгы =) а я сейчас как раз учебник по нему читаю. Кстати, сам язык мне очень понравился ;)

А чем форт-процессоры отличаются от Intelовских? %) тем, что лучше со стеком работают или как? :)))))))))))

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

> ассемблерный код получается в итоге _медленнее_. Было это где-то во времена Pentium-1.

надо было по U и V пайпам аккуратно раскидывать. Но в общем, да, после этого уже вручную потеряло смысл.. или на RISC'ах -- тоже.

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

>что вы всё про искусственные VM

Ну, потому что я JBForth, например, под конкретную задачу писал, которая эффективно только на JVM решалась :)

...

«Каждый фортер должен хотя бы раз в жизни написать свой Форт» ;) У меня это уже 3-й или 4-й был, но первый, который кому-то кроме меня ещё востребован был.

Правда, я ещё прикладывал руку к коммерческому Forthius 32 от «Тиары», но это уже не моё начинание было. Собственно, из своих расширений к нему помню только 32-х битный Форт-ассемблер (сегодня самому не верится, но написал я его за два дня) и загрузка внешних 32-х битных .obj с линковкой налету. Что-то типа современных динамических библиотек :) Только там загружались именно обычные объектники, неважно на чём скомпилированные, на tasm32 или watcom c++.

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

>надо было по U и V пайпам аккуратно раскидывать.

Даже на 486-х эта проблема уже вылезла. Я некоторые приёмы оптимизации у Watcom C++ подсматривал :D

Pentium - он просто окончательно добил.

Мало того, что на ассемблере просто так пишешь в 10 раз медленнее, чем на Си++, так ещё, если оптимизировать начинаешь аккуратно - это ещё вдесятеро медленнее... :D

А потом Андрей Черезов, автор SP-Forth, на очередное моё предложение по оптимизации транслятора, ответил - «пока я тут мучаюсь, пытаясь выкроить твои 10% выигрыша по скорости, Intel выпустит новый процессор, на котором тот же код будет работать в два раза быстрее» :)

Со временем я его стал понимать :D

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

>здравствуй, BILL GILBERT :-]

Кстати, я тоже ломал спектрумовский софт. Только своеобразно :D Хакеры часто ставили свои защиты. Вот я их и снимал. И распространял в голом виде. Только в 0-ю строку загрузчика добавлял что-то типа «PROTECTION REMOVED BY =KRON=» :) И раскрашивал в цвета российского флага.

...

Хотя сам =KRoN= родился ещё раньше, во времена БК-0010. Тогда было модно подписываться всякими «RDA Corp», «SMC Corp», «SCREW Corp»... Ну я и придумал себе по инициалам «=KRoN= Corp» :D

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

> А чем форт-процессоры отличаются от Intelовских? %)

тем, что ассемблер у них -- язык высокого уровня. одно Форт-слово = один опкод. Типа как в VAX'ах ассемблер -- это Си. Только сам "опкод", микрокод можно на том же форте переписать :)

То есть, потенциально можно подобрать более оптимальные форт-слова для некоторых задач. Типа как в троичной системе выразить двоичные числа компактнее. Плюс, в идеальном форт-процессоре слова-опкоды можно переопределять и добавлять по ходу дела :)

> тем, что лучше со стеком работают или как? :)))))))))))

на эту тему курить в гугле 4 stacks VLIW FORTH CPU. Студент на диплом налабал VHDL форт-процессора, отладил, запустил на опытном образце, и оценил производительность. У него было 4 стека, VLIW который параллельно исполняет 4 слова. На 100 Mhz что-то много флопсов получилось.

Ну и почитать про замыкания, продолжения, call/cc. Тот же стек выполнения.

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

anonymous, Спасибо! :)) впереди целая ночь - буду читать ;)

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

> На P2 - опять строковые... А сегодня, в наш век разброда и шатания производителей и платформ?

А в наш век для Core2Duo строковые операции опять быстрее, но на них существует ажно 3 errat'ы, из-за которых их лучше не использовать ;)

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

> Хотя сам =KRoN= родился ещё раньше, во времена БК-0010. Тогда было модно подписываться всякими «RDA Corp», «SMC Corp», «SCREW Corp»... Ну я и придумал себе по инициалам «=KRoN= Corp» :D

Даёшь Delirium Tremens! :)

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

> «PROTECTION REMOVED BY =KRON=» :) И раскрашивал в цвета российского флага

нёс опенсорц в народные массы во время всеобщего вареза! :]

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

> У вас в детстве не было спектрума?!

Детство - слишком хорошая пора, чтобы тратить его на компы.

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

> а почему? =-O :((((

Язык слишком низкоуровневый.

> Только при пограммировании на асме ты можешь вручную давать имя секциям файла ;) знаешь, какой будет в итоге выходной файл. ничего лишнего. управляешь регистрами процессора и т.д. код получается быстрым и компактным. в общем, понимаешь, как все работает...

Секции файла должны быть стандартны. Регистрами процессора управлять - это и есть то самое "лишнее", потому как теряется портабельность. Код НЕ получается быстрым и компактным, хороший компилятор C оптимизирует лучше, чем человек. "Как работает" понимаешь только потому, что ничего сложного программа на ассемблере делать не может.

> эт почему? :) я взломал пару программ для себя. написал инфектор PE-файлов простенький =) кейлогер вчера написал, отсылающий отчеты мне на мыло =) еще пару троянов... загрузчик ОС простой...

Это и есть совершенно неинтересные вещи. Быдлохакеров вообще не должно быть.

> но серьезные проекты на нем написать очень сложно... это и так понятно...

Практически - невозможно.

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

>Регистрами процессора управлять - это и есть то самое "лишнее", потому как теряется портабельность. Код НЕ получается быстрым и компактным, хороший компилятор C оптимизирует лучше, чем человек. "Как работает" понимаешь только потому, что ничего сложного программа на ассемблере делать не может.

Очередная неправда - ни один из существующих ныне компиляторов (про интерпретаторы можно вообще забыть навсегда) не способен оптимизировать эффективнее программиста на ассемблере. Характерный пример - не так давно был пост в этой ветке про fpu core 2 duo и sse. И будет так до тех пор пока не появится искуственный интеллект. Еще яркий пример - mplayer - напичкан ассемблерными вставками. В ядре linux много ассемблерных вставок.

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

>Очередная неправда - ни один из существующих ныне компиляторов (про интерпретаторы можно вообще забыть навсегда) не способен оптимизировать эффективнее программиста на ассемблере.

Хорошо, я уточню за него. С _теми же ресурсными затратами_ программиста код, полученный компилятором Си получится НАМНОГО эффективнее ассемблерного кода :)

...

Я, ведь, расписывал выше ситуацию.

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

«Машина должна работать. Человек - думать.»

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

>А имея выигрышь в ресурсах разработки, кстати, у программиста становится больше времени на то, чтобы не такты экономить, а алгоритм в целом пересмотреть.

Я же не предлагал писать всю программу на ассемблере - для себя я давно определил что это утопизм тем более в linux. Речь шла об оптимизации критичных участков.

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

> если есть модуль, который должен быстро работать? можно ведь некоторые модули на ассемблере писать, а остальное на ЯВУ ;)

И кто, черт возьми, будет разбирать потом твои художества? Вот, блин, ногородят такие `умники' своих ассемблерных модулей, лелея эго, им видите ли удобно, а потом тому, кому досталось это в наследство, легче переписать все заново, чем разбираться в этой куче .овна.

ps мое мнение: если человек лепит ассемблер там, где можно без него обойтись (это почти всегда), гнать его ссаной метлой.

// :(

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

> В ядре linux много ассемблерных вставок.

Мало. Только в платформозависимом коде.

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