
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.30] |
![]() |
|
Страницы: (31) « Первая ... 7 8 [9] 10 11 ... 30 31 ( Перейти к последнему сообщению ) |
Сообщ.
#121
,
|
|
|
Цитата wormball @ ООП на Форте я пока что не видел (может быть, плохо искал) и пока что не придумал, как нормально организовать. Наверное, было бы полезно. В AstroForth видел такую либрару. Но все дело в том, что в форте сами словари и слова вполне можно рассматривать как ООП. Несколько необычное, неявное, но довольно гибое ![]() Цитата wormball @ У того же Броуди наглядно показывается, что при отказе от специфического синтаксиса Форта и попытках подражания синтаксисам других языков сильно затрудняется процесс видоизменения языка. Но есть довольно таки удачные примеры создания на Форте того же Лиспа и Пролога в одном флаконе. Полученный гибрид с успехом применялся в экспертных системах. Автора не помню, у вирмейкеров эту книженку видел ![]() Цитата mak4444 @ Вообще, Форт получается в результате максимального упрощения интерпретатора. Если-бы вычислительная техника пошла по пути Форта, у него не было-бы названия. Т.к. Форт может быть в основе всего. Да, и в результате, как оказалось, сейчас используются неплохие Форт-процессоры. |
Сообщ.
#122
,
|
|
|
Я тут понял один прикол. Самое сложное в программировании на Форте (для тех, кто программировал до этого на других языках) - это избавиться от страха перед ошибками. Ежели я что-то написал, то я ещё по полчаса перед первым запуском перечитываю код и выискиваю ошибки, тогда как Форт позволяет обходиться без этого, легко находя ошибки в процессе тестирования.
|
Сообщ.
#123
,
|
|
|
Цитата wormball @ Я тут понял один прикол. Самое сложное в программировании на Форте (для тех, кто программировал до этого на других языках) - это избавиться от страха перед ошибками. Непонял, а при чем здесь страх? Если я кодю на асме, то проверяю наличие ошибок постой компиляцией, а ошибки в логике программы IMHO везде одинаковы. Кстати, wormball, а почему бы тебе не добавить слово, которое делает парсинг входного выражения, как в ЯВУ? Согласись, что нелегко переходить на польскую запись после 10 лет учебы в школе ![]() |
Сообщ.
#124
,
|
|
|
Цитата AndNot @ Непонял, а при чем здесь страх? Как при чём - страх перед необъяснимыми ошибками и многодневными безрезультатными перечитываниями исходников. По крайней мере, когда я программировал на паскале, дело было именно так ![]() Цитата AndNot @ Кстати, wormball, а почему бы тебе не добавить слово, которое делает парсинг входного выражения, как в ЯВУ? Я над этим думал, основная сложность - теряется универсальность и простота, т. е. для каждой новой функции надо будет оговаривать её поведение в конструкции со скобками. Вплотную этой проблемой ещё не занимался, возможно, когда-нибудь сделаю. Лично мне отсутствие такой функции несильно мешает. |
Сообщ.
#125
,
|
|
|
Цитата wormball @ Я над этим думал, основная сложность - теряется универсальность и простота Я немного другое имел ввиду. Просто добавить слово, а не менять весь язык. К примеру: ![]() ![]() MyVar := expression Слово := и будет выбирать из входного потока данные и переробатывать их в польскую запись. Есть соответствующий алгоритм. Он как раз и работает со стеком. Вроде мелочь, но зачастую удобно для быстрой проверки на "вшивость" той или иной формулы. Цитата wormball @ т. е. для каждой новой функции надо будет оговаривать её поведение в конструкции со скобками. А это уже действительно коренная ломка. Лучше не надо ![]() |
Сообщ.
#126
,
|
|
|
Цитата AndNot @ Цитата wormball @ Я над этим думал, основная сложность - теряется универсальность и простота Я немного другое имел ввиду. Просто добавить слово, а не менять весь язык. К примеру: ![]() ![]() MyVar := expression Слово := и будет выбирать из входного потока данные и переробатывать их в польскую запись. Есть соответствующий алгоритм. Он как раз и работает со стеком. Вроде мелочь, но зачастую удобно для быстрой проверки на "вшивость" той или иной формулы. Цитата wormball @ т. е. для каждой новой функции надо будет оговаривать её поведение в конструкции со скобками. Все о чем тут сказано есть в библиотеках и возможностях языка и при желании используется в Форте:) При этом Форт при этом не перестает быть Фортом. P.S. В Форте самая мощная конструкция CREATE ... DOES> решаем множество проблем для убирания избыточности кода. |
Сообщ.
#127
,
|
|
|
По поводу сабжа где-то слышал так -
Цитата и в Индии, и в России и ещё где попало. Тогда по сути "пропадает" проблема разборки в чужом коде идеальный язык программирования - это тот, в котором все программисты одни и те же действтия делают одинаково ![]() ЗЫ "Пропадает" в кавычках ибо имхо. |
Сообщ.
#128
,
|
|
|
я насчет спора про два файла
где короче и быстрее на Форте или С++ wormball, ты говоришь ,что на С++ эта задача решена за счет библиотеки, но и на форте тоже эта задача решается с помощью библиотеки ТОЛЬКО ВСТРОЕННОЙ ведь проц кроме четырех логических действий (лог. И, лог. ИЛИ, лог НЕ, лог. ДОПОЛНЕНИЕ, ну и копирование) он ничего не знает просто С++ обеспечивает более низкоуровневый подход но с помощью библ. можно пользоваться и высоко уровневым а Форт обеспечивает только ВЫСОКОУРОВНЕВЫЙ ПОДХОД именно поэтому серьезные прикладные программы в области науки, а также операционные системы и крутые комп игры пишу на таких титанах как С/С++ или Паскаль/Дельфи(реже) если на С++ библ можно переписать (оптимизируя под тек задачи) или написать новую то на Форте придется выбрасывать эту версию интерпретатора а также весь написанный под него код по соображением несовместимости Добавлено самый идеальный язык (на данный момент), это С++, так как он обеспечивает ЛЮБОЙ уровень подхода от асма(ниже некуда) до объектного программинга(самый высокий) а потом, если можешь вырази этот код на Форте ![]() ![]() typedef class DObject_base { protected: GRect_map position; PR_RESULT PutInMap(); void PopInMap(); void Move(GVector_map& v,PARAM_VALUE sp); void Destroy(PR_RESULT INTELLIGENT = RES_OK); public: P_RECT_INF GetMyPosition()const {return &position;} virtual void CreateObject()=0; // for create object virtual void Die()=0; // for destroy object virtual OBJECT_ID GetObjID()const = 0; virtual MODE_TYPE GetHeight()const = 0; virtual MODE_TYPE DrawMode()const =0; virtual MODE_TYPE Collision(PARAM_VALUE Obj_type) = 0; virtual PR_RESULT Contact(MODE_TYPE Con_type) = 0; virtual STRING_RES GetAboutObject()const = 0; virtual void Think() = 0; // timer function (T = 0.4 (0,5) sec) } DOBJECT; typedef class DStatic_obj:public DObject_base { void Think(){} MODE_TYPE DrawMode()const {return NULL;} } DSTATIC; typedef class DDecoration_stat_obj:public DStatic_obj { PR_RESULT Contact(MODE_TYPE Con_type){return RES_BAD;} } DDECORATION; именно саму идею наследования как связи |
Сообщ.
#129
,
|
|
|
Цитата impik777 @ самый идеальный язык (на данный момент), это С++, так как он обеспечивает ЛЮБОЙ уровень подхода от асма(ниже некуда) до объектного программинга(самый высокий) ![]() Хотя в одном согласен: C++ обеспечивает широкие возможности (а со следующей версией стандарта они, вроде бы, станут еще шире и менее неудобными), чего никак не могут предоставить многие другие языки. Но, всё-таки, C++ — это язык общего назначения, и всюду его совать не стоит — для многих задач/областей есть специализированные языки. |
Сообщ.
#130
,
|
|
|
Цитата Идеального языка не существует я имел ввиду близкий к идеальному спасибо, что поправил Добавлено еще я хотел добавить, что соревноваться кто быстрее перевернет файл вверх тормашками уже не концептуально т.к большинство стандартный алгоритмов написаны специалистами матаматиками, до которых нам - большинству(я не хочу ни кого обидеть)очень далеко сейчас большую значимость имеет моделирование и проектирование ведь на работе с вас не будут требовать сделать запись в файл особым способом а попросят смоделировать например транспортныю систему, для расчета оптимальных маршрутов и т.д. |
Сообщ.
#131
,
|
|
|
Цитата Kopa @ P.S. В Форте самая мощная конструкция CREATE ... DOES> решаем множество проблем для убирания избыточности кода. А кто с этим спорит? Только она самая мощная не только в Форте, а наверное вообще среди любых ЯВУ. Цитата Rulikkk @ Цитата Цитата идеальный язык программирования - это тот, в котором все программисты одни и те же действтия делают одинаково и в Индии, и в России и ещё где попало. Упаси боже до такого дожить ![]() ![]() Цитата Rulikkk @ Тогда по сути "пропадает" проблема разборки в чужом коде Да не, скорее всего просто исчезнут нормальные программисты ![]() Добавлено impik777 wrote: Цитата impik777 @ ты говоришь ,что на С++ эта задача решена за счет библиотеки, но и на форте тоже эта задача решается с помощью библиотеки ТОЛЬКО ВСТРОЕННОЙ Это не встроенная библиотека(а вообще странный термин), это стандартный набор слов Форта, так же как в С++ void,while и тд. Цитата impik777 @ ведь проц кроме четырех логических действий (лог. И, лог. ИЛИ, лог НЕ, лог. ДОПОЛНЕНИЕ, ну и копирование) Проц знает намного больше ![]() Цитата impik777 @ просто С++ обеспечивает более низкоуровневый подход но с помощью библ. можно пользоваться и высоко уровневым а Форт обеспечивает только ВЫСОКОУРОВНЕВЫЙ ПОДХОД Я валяюсь ![]() ![]() ![]() ![]() ![]() Форт замечателен тем, что обеспечивает очень удобные низкоуровневые средства, и в то же время не менее удобные высокоуровневые. Причем без напрягов. Цитата impik777 @ именно поэтому серьезные прикладные программы в области науки, а также операционные системы и крутые комп игры пишу на таких титанах как С/С++ или Паскаль/Дельфи(реже) В области науки, а точнее в области ИИ и экспертных системах, применяется Форт, Лисп, и Пролог. Причем в Форт легко добавляются возможности Лиспа и Пролога, после чего это уже нечто. А С ,сколько бы плюсов не было, до них далеко. Нет у него такой гибкости. Он по своей сути статичен и не способен к самоизменению и написанию программ с нечеткой логикой. Цитата impik777 @ самый идеальный язык (на данный момент), это С++, так как он обеспечивает ЛЮБОЙ уровень подхода от асма(ниже некуда) до объектного программинга(самый высокий) А ты на С++ ООП можешь, по ходу выполнения программы, потомку поменять родителя? Или добавить/удалить/изменить методы? На Форте ноу проблем. Просто в Форте нет понятий ООП(они появились позже), но все возможности ООП уже встроены. И асм имеется, причем значительно более мощный, нежели в С++. А насчет примера: в Форте не нужно так все расписывать. Там это делается по умолчанию, т.е. есть список словарей, у каждого словаря свой набор слов, и есть текущий словарь, куда и добавляются/удаляются/изменяются слова. Естественно любой словарь можешь сделать текущим и работать с ним. Можешь его сбросить на диск и считать обратно(и не только на диск, а вообще без разницы куда), можешь просто удалить. Причем это сама структура языка, сам Форт, а не дополнительные либрары и примочки. Извини если что не так, но честно говоря не удержался, встретив высказывание чисто сишника. |
Сообщ.
#132
,
|
|
|
Цитата AndNot @ И асм имеется, причем значительно более мощный, нежели в С++. Кхм... В C++ нету ассемблера. |
Сообщ.
#133
,
|
|
|
Цитата mo3r @ Кхм... В C++ нету ассемблера. Сорри, просто для меня нет разницы между С и С++ ![]() ![]() |
Сообщ.
#134
,
|
|
|
Цитата AndNot @ Сорри, просто для меня нет разницы между С и С++ ![]() ![]() Да и в C его тоже нету... |
Сообщ.
#135
,
|
|
|
Цитата AndNot @ А ты на С++ ООП можешь, по ходу выполнения программы, потомку поменять родителя? Или добавить/удалить/изменить методы? ![]() если тебе это надо значит ты просто неправильно спроектировал систему наследования -Added Цитата mo3r @ Кхм... В C++ нету ассемблера. а асм вставки ??? -Added Цитата AndNot @ Проц знает намного больше ![]() ![]() но ВСЕ эти больше строятся на этих четырех (даже трех) т.к. первые три - это элементарные звенья которые могут составлять структуру процессора (есть другие, но они относятся к немного другим вещам) например операция сложения реализуется с помощью этих трех звеньев (есть такие вещи как сумматор, полусумматор ![]() просто все это забито на уровне железа |