
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.30] |
![]() |
|
Страницы: (31) « Первая ... 5 6 [7] 8 9 ... 30 31 ( Перейти к последнему сообщению ) |
Сообщ.
#91
,
|
|
|
В подробности не вдавался, но вспоминаю, как мы проходили видимо аналогичную систему - программу Labview. Там тоже можно программировать, рисуя некоторые графические конструкции, причём эта программа ориентирована на научные применения (ну, например, принять данные с экспериментальной установки и автоматически обработать) и выполнена почти с матлабовским размахом. А вообще, на заре программирования изобрели такую вещь, как блок-схемы - это фактически то, о чём идёт речь. Насколько я знаю (опять же, вплотную не вникал), в настоящее время существуют генераторы С++-кода на основе блок-схем - я слышал такие загадочные слова, как Rational Rose и UML-диаграммы. Одним словом, я хочу сказать, что это далеко не новый подход (как, кстати, и Форт). Вопрос в следующем: чем алгоритм билдер лучше всего вышеперечисленного, и вообще чем графическое программирование лучше текстового? ![]() ![]() Цитата Grumike @ 3. Большинство пишущих успевает понять что "просто еще один форт" это хуже чем "один из фортов, поддерживающий стандарт/имеющий достаточное число библиотек + свои расширения", благо одно из основных его свойств - расширяемость! Ну, пока что я преимуществ стандарта не осознал. Лично мне кажется, что стандарт несколько устарел. |
![]() |
Сообщ.
#92
,
|
|
Цитата wormball @ А вообще, на заре программирования изобрели такую вещь, как блок-схемы - это фактически то, о чём идёт речь. Как человек, очень тесно и очень долго работавший с блок-схемам, могу сказать: исходя из моего опыта, блок-схемы непригодны для практических задач. Сколько бы то ни было сложная программа в текстовом виде записывается намного компактнее и понятнее, чем в графическом. |
Сообщ.
#93
,
|
|
|
Идеальный с точки зрения язык программирования («идеальный» не в смысле абстрактного идеализма, а в смысле наилучшего из того, что можно пощупать руками), 1) не должен навязывать определенную парадигму по принципу «один размер на всех». Конечно, можно практически во всех (кроме клинических) случаях работать в любом стиле на любом языке, но суть в том, что это должно быть не через одно место; 2) должен располагать средствами для расширения самого себя, желательно, в том же флаконе, а не как C (через препроцессор); 3) не должен обладать тем неприятным свойством, что простые задачи на нем решать просто, сложные — невозможно. Желательно, чтобы при возрастании сложности задачи сложность формулировки решения возрастала лишь маргинально; 4) большим плюсом является «интеграбельность» с существующими библиотеками и другими языками (вопрос реализации, но отсутствие таких реализаций зачастую настораживает).
Может ли автор темы, или другой какой адепт Forth рассусолить мне, темному, эти четыре пункта? |
Сообщ.
#94
,
|
|
|
Цитата shadeofgray @ Как человек, очень тесно и очень долго работавший с блок-схемам, могу сказать: исходя из моего опыта, блок-схемы непригодны для практических задач. В классическом виде - наверное, а вообще, пожалуй, над этим стоит подумать. Кстати, как автор алгопаскаля, можешь поделиться своими соображениями про языки программирования? Цитата Ho Im @ Может ли автор темы, или другой какой адепт Forth рассусолить мне, темному, эти четыре пункта? Наверное, Grumike объяснит лучше, но я тоже попробую. 1. Всё зависит от твоего определения понятия "через одно место". А вообще вследствие неограниченной расширяемости из Форта можно сделать хоть Пролог. 2. Именно наличием данного качества Форт отличается от других известных мне языков программирования. Расширяемость - это не свойство Форта, это его сущность. (во как выразился ![]() 3. Книжки Броуди кишат примерами серьёзных систем на Форте. От себя добавлю, что на СП-форте силами одного или двух программистов написан полноценный сервер, на котором функционирует сайт forth.org.ru. Ваш покорный слуга в настоящее время занимается написанием программы на Форте для моделирования молекулярной динамики, кстати, это самый серёзный проект в моей жизни. Не скажу, что мне легко, но на Паскале мне было бы не легче. 4. Лично я юзаю старый добрый механизм ДЛЛ-библиотек. Как насчёт линукса - не знаю, ни разу не сталкивался. Наверное, там тоже есть нечто подобное. |
![]() |
Сообщ.
#95
,
|
|
Цитата wormball @ можешь поделиться своими соображениями про языки программирования? Ну, у меня довольно-таки специфичный взгляд на этот вопрос, поскольку меня больше интересовали вопросы переносимости и реализации численных методов. В моем понимании, идеальный язык программирования должен не содержать конструкций, чье поведение не полностью определено стандартом языка. Например, в обычном паскале нет единого мнения по поводу того, чему равно значение управляющей переменной цикла for после завершения цикла. Одни компиляторы устанавливают её в "следующее за последним" значение, другие - неизвестно во что. Если цикл не выполнялся ни разу (верхняя граница меньше нижней), то после цикла в одном компиляторе переменная цикла будет равна нижней границе, а в другом - не изменится вообще. Таких вещей в идеальном языке программирования не должно быть. Всё должно быть регламентировано стандартом. Безусловно, любой современный язык программирования должен включать в себя средства для динамического управления памятью, динамические массивы, в т.ч. и многомерные. Перегрузка операторов также крайне желательна. |
Сообщ.
#96
,
|
|
|
Цитата shadeofgray @ В моем понимании, идеальный язык программирования должен не содержать конструкций, чье поведение не полностью определено стандартом языка. Например, в обычном паскале нет единого мнения по поводу того, чему равно значение управляющей переменной цикла for после завершения цикла. Одни компиляторы устанавливают её в "следующее за последним" значение, другие - неизвестно во что. Если цикл не выполнялся ни разу (верхняя граница меньше нижней), то после цикла в одном компиляторе переменная цикла будет равна нижней границе, а в другом - не изменится вообще. Таких вещей в идеальном языке программирования не должно быть. Всё должно быть регламентировано стандартом. Ну, это к языку имеет мало отношения, это вопрос к качеству написания стандарта. Цитата shadeofgray @ Безусловно, любой современный язык программирования должен включать в себя средства для динамического управления памятью, динамические массивы, в т.ч. и многомерные. ![]() Цитата shadeofgray @ Перегрузка операторов также крайне желательна. А вот этого в Форте нет вследствие того, что нет контроля типов. Конечно, можно сделать контроль типов, но я считаю, что его преимущества не стоят недюжинного усложнения языка. Насколько я понимаю, перегрузка операторов нужна только для матриц и строк. |
Сообщ.
#97
,
|
|
|
Цитата А вот этого в Форте нет вследствие того, что нет контроля типов. Конечно, можно сделать контроль типов, но я считаю, что его преимущества не стоят недюжинного усложнения языка. Насколько я понимаю, перегрузка операторов нужна только для матриц и строк. Это не так.Перегрузка операторов удобна практически везде где применимо ооп.а оно применимо много где.Самый очевидные пример - различные математические объекты.Если надо обширно пользоваться теми же кватернионами и векторами то без перегруженных операторов становится плохо. |
Сообщ.
#98
,
|
|
|
Цитата 1. Всё зависит от твоего определения понятия "через одно место". А вообще вследствие неограниченной расширяемости из Форта можно сделать хоть Пролог. Через одно место — это как в случаях, когда надо вместо понятного foo==bar писать foo.equals(bar) (Java), это когда надо написать небольшую анонимную функцию и передать ее как аргумент другой функции — в реализации на C. Хм, а пролог, сделанный из форта, разве не перестанет обладать предложений построения Йоды речи магистра даром? ![]() Цитата Это не так.Перегрузка операторов удобна практически везде где применимо ооп.а оно применимо много где.Самый очевидные пример - различные математические объекты.Если надо обширно пользоваться теми же кватернионами и векторами то без перегруженных операторов становится плохо. Мне в этом плане нравится Python. Поскольку он ОО насквозь (хотя позволяет программировать так, что этот факт можно не замечать), то операторы всегда вызывают некоторые методы, присущие всем объектам. В результате переопределяются эти методы, что позволяет и получить желаемый результат, и избежать введения еще одной громоздкой синтаксической конструкции (operator blam(...)). |
Сообщ.
#99
,
|
|
|
Цитата Pourtous @ Цитата А вот этого в Форте нет вследствие того, что нет контроля типов. Конечно, можно сделать контроль типов, но я считаю, что его преимущества не стоят недюжинного усложнения языка. Насколько я понимаю, перегрузка операторов нужна только для матриц и строк. Это не так.Перегрузка операторов удобна практически везде где применимо ооп.а оно применимо много где.Самый очевидные пример - различные математические объекты.Если надо обширно пользоваться теми же кватернионами и векторами то без перегруженных операторов становится плохо. Случайно наткнулся на обсуждение языка Форт на данном форуме. Если интересен подход применяемый в данном языке то более детальное обсуждение можно найти на http://fforum.winglion.ru/index.php P.S. Форт малоизвестен в настоящее время, хотя находит еще достаточное число сторонников его использования:) |
Сообщ.
#100
,
|
|
|
Цитата Это не так.Перегрузка операторов удобна практически везде где применимо ооп.а оно применимо много где.Самый очевидные пример - различные математические объекты.Если надо обширно пользоваться теми же кватернионами и векторами то без перегруженных операторов становится плохо. можно спокойно писать матсофт и без перегрузки. на обычно фортране77 |
Сообщ.
#101
,
|
|
|
Цитата shadeofgray @ Например, в обычном паскале нет единого мнения по поводу того, чему равно значение управляющей переменной цикла for после завершения цикла. Что в этом плохого ? Просто считается, что переменная после выхода из цикла неинициализирована. Это нормально, так же как и то, что изначально являются неинициализированными локальные переменные и содержимое блоков динамической памяти. Если что - компилятор предупредит Вас варнингом об использовании неинициализированного значения. Или просто есть желание сэкономить одно присваивание после цикла ? По замыслу оператора for, переменная цикла должна существовать только внутри цикла. Но в Паскале "область жизни" переменной может быть ограничена только рамками функции, поэтому и возникают вопросы подобно Вашему... |
Сообщ.
#102
,
|
|
|
Цитата gnus @ можно спокойно писать матсофт и без перегрузки. на обычно фортране77 Потому что там многие операторы с математическими объектами являются частью языка. И потом, в фортране95 всё таки была введена пергрузка операторов. |
Сообщ.
#103
,
|
|
|
Цитата antigen @ Цитата gnus @ можно спокойно писать матсофт и без перегрузки. на обычно фортране77 Потому что там многие операторы с математическими объектами являются частью языка. И потом, в фортране95 всё таки была введена пергрузка операторов. ну просто не вижу особого смысла в перегрузке для матприложений. согласись, недалекому юзеру, пользующему твой пакет, понятней будет, скажем, сабрутина PowMatrix(M,p), чем какое-нибудь M^p |
Сообщ.
#104
,
|
|
|
Цитата gnus @ ну просто не вижу особого смысла в перегрузке для матприложений Здесь ключевая фраза - "не вижу". Это ты не видишь, это твоё субъективное мнение. Недалёкий юзер не то что не будет читать исходник на фортране, - он просто этими прогами не пользуется. А то, что понятней или не понятней, никогда однозначно не соглашусь - это дело привычки и традиций среды программирования, да и вообще тема для холивара скорее. |
Сообщ.
#105
,
|
|
|
да, соглашусь. это я не вижу. но вот такое моё мнение, не надо его принимать в штыки.
а недалеким юзерам иногда приходится читать сорсы на фортране. ситуации всякие бывают. |