Comments 107
: TEST ( a b — (a+b)/(a-b) ) 2DUP ( a b a b ) + ( a b a+b ) -ROT ( a+b a b ) — ( a+b a-b ) /;
Всё просто и понятно :)
Всё просто и понятно :)
После красивых и цельных немэйнстримовых языков становится мерзко и неприятно писать на некрасивых мэйнстримовых. Я вот послу haskell-а пресловутого и D жутко плююсь, когда нужно писать на C++. Просто неприятно, что приходится реализовывать стройную и красивую концепцию неестественным для оной способом.
Так что да, для саморазвития нестандартные языки и идеи в них воплощенные — самое оно, но дело делать слегка мешает.
Так что да, для саморазвития нестандартные языки и идеи в них воплощенные — самое оно, но дело делать слегка мешает.
В Apple Objective-C юзают с конца девяностых, а сейчас он в пятерке только благодаря айфонам :)
Не могу согласиться с «синдромом утенка».
Начинал изучение программирования с бейсика и когда перешел на паскаль — понял, что на бейсике больше писать не буду.
После паскаля пришлось работать на С/С++ — паскаль был отвергнут начисто и при виде паскаля меня начинает колотить нервная дрожь.
После этого и до настоящего момента пишу на Java и на С++ теперь смотрю с ужасом (простите меня, адепты)
Думаю, что еще несколько подобных итераций мне предстоит в жизни сделать. Полюбить новое.
Так что тезис «с чего начал — то и любишь» ставлю под сомнение. Впрочем, стараюсь особо не вмешиваться в холивары относительно того «с чего надо начинать». Жизнь быстро меняется.
Начинал изучение программирования с бейсика и когда перешел на паскаль — понял, что на бейсике больше писать не буду.
После паскаля пришлось работать на С/С++ — паскаль был отвергнут начисто и при виде паскаля меня начинает колотить нервная дрожь.
После этого и до настоящего момента пишу на Java и на С++ теперь смотрю с ужасом (простите меня, адепты)
Думаю, что еще несколько подобных итераций мне предстоит в жизни сделать. Полюбить новое.
Так что тезис «с чего начал — то и любишь» ставлю под сомнение. Впрочем, стараюсь особо не вмешиваться в холивары относительно того «с чего надо начинать». Жизнь быстро меняется.
Я думаю, пока программирование находится на ранней фазе, это не так важно. В процессе обучения можно довольно легко прыгать между языками. А вот после десятилетнего опыта разработки на каком-то одном языке — уже нет. Слишком велика инерция.
ну, я уже вовсе не мальчик :)
если оценивать по временной шкале, то бейсик 1987, паскаль 1988-1993, си с переходом на с++ 1991-2002, Java — c 2002 по н.вр.
в следующем коменте — мудрая мысль о том, что человек решает задачи с помощью инструментов, коими являются языки. если задачи меняются так, что нельзя использовать прежний язык — придется либо отказаться от выполнения задачи, либо полюбить новую технологию.
если оценивать по временной шкале, то бейсик 1987, паскаль 1988-1993, си с переходом на с++ 1991-2002, Java — c 2002 по н.вр.
в следующем коменте — мудрая мысль о том, что человек решает задачи с помощью инструментов, коими являются языки. если задачи меняются так, что нельзя использовать прежний язык — придется либо отказаться от выполнения задачи, либо полюбить новую технологию.
зависит от целей и задач. если бы подвалило создание супер-пупер быстрого чего-нибудь без оглядки на утечки памяти — то так же можно невзлюбить яву и полюбить c|asm. хотя да, vb давно уже за гранью добра.
а закончится, скорее всего, пониманием, что язык без контекста задачи — мало значит, а изучить можно что угодно, лишь бы не брейнфак.
а закончится, скорее всего, пониманием, что язык без контекста задачи — мало значит, а изучить можно что угодно, лишь бы не брейнфак.
Попробуйте Python.
Был уже такой известный Charles Simonyi с Intentional Programming.
Несмотря на поддержку MS, что-то заглох проект.
Несмотря на поддержку MS, что-то заглох проект.
Действительно, зачем мы с вами обсуждаем вопросы программирования на универсальном русском языке? давайте возьмём что-то специализированное.
Я вам уже ответил — ваши рассуждения здесь всерьез не принимают не потому, что они гениальны или безумны и непонятны простой публике, а потому, что вы рассуждаете слишком обобщённо. Блондинки, выключатели, распознавание образов… всё это красиво, но как-то по касательной.
Вы возьмите несколько типичных повседневных задач программирования — проверка орфграфии по словарю; построение графика любой заданной пользователем функции; сжатие и распаковка файла алгоритмом LZW… да что угодно, что вам нравится — и покажите, каким бы ВЫ хотели видеть решение этой задачи.
На конкретных примерах сразу видно, есть в рассуждениях смысл и логика или нет.
Вы возьмите несколько типичных повседневных задач программирования — проверка орфграфии по словарю; построение графика любой заданной пользователем функции; сжатие и распаковка файла алгоритмом LZW… да что угодно, что вам нравится — и покажите, каким бы ВЫ хотели видеть решение этой задачи.
На конкретных примерах сразу видно, есть в рассуждениях смысл и логика или нет.
а я до сих пор с трудом понимаю, о чем идет речь.
поэтому и хочу конкретных примеров.
поэтому и хочу конкретных примеров.
неудачных много, нам бы удачные :)
я не знаю, кто для вас неудачники.
LabVIEW
AnyStates
— нетекстовые языки, как вам нравится.
Опять же, указывая «неудачников», все равно трудно понять, чего вам хочется. Вы же пишете, что работы там на курсовую студенту, поэтому не вижу смысла перечислять те или иные большие проекты, проще написать самому эту самую курсовую. Или хотя бы подробно описать ее.
LabVIEW
AnyStates
— нетекстовые языки, как вам нравится.
Опять же, указывая «неудачников», все равно трудно понять, чего вам хочется. Вы же пишете, что работы там на курсовую студенту, поэтому не вижу смысла перечислять те или иные большие проекты, проще написать самому эту самую курсовую. Или хотя бы подробно описать ее.
при чем тут это? какой-то рандомно сгенерированный коммент.
вот вы еще удивляетесь минусам, а сами вместо прямого ответа на мою просьбу
«поэтому не вижу смысла перечислять те или иные большие проекты, проще написать самому эту самую курсовую. Или хотя бы подробно описать ее. „
начинаете какие-то другие вещи обсуждать. давайте не будем отвлекаться от темы и решать, кто умнее, а кто глупее. ближе к делу.
«поэтому не вижу смысла перечислять те или иные большие проекты, проще написать самому эту самую курсовую. Или хотя бы подробно описать ее. „
начинаете какие-то другие вещи обсуждать. давайте не будем отвлекаться от темы и решать, кто умнее, а кто глупее. ближе к делу.
Я думаю, на текущем уровне развития пора бы массово задействовать touch-мониторы, и соответственно развивать software для программирования. Я уже давно склоняюсь к тому, что чисто текстовая форма написания программы порождает не только проблемы парсинга, но и holy wars по поводу форматирования. Думаю, JetBrain'овский MPS является попыткой показать это в явной форме.
Программа представляет собой структурированный код, верно? У этого кода есть уровни вложенности, инкапсуляции и т.д. Структуры, описываемые этим кодом, все ближе напоминают семантические сети, которые проще всего описывать графами. Имхо, программирование постепенно к этому и стремится. Соответственно, средства программирования (в т.ч. представление исходного кода программы) тоже рано или поздно поменяет свою форму на более приемлемую.
Не подумайте, что я предлагаю уйти от текстовой формы, нет! Она очень удобна. Но ее внутреннее представление логичнее хранить в виде дерева, а еще лучше — графа со ссылками. Тогда программа сама по себе будет напоминать большой индекс, работа с которым для IDE (а также для тех, кто пишет макросы) будет гораздо проще. А, следовательно, благодаря упрощению одного из элементов цепи поддержки работы, появится возможность создания более продвинутых средств программрования.
Т.е. все как обычно. Автоматизируем все, что можем представить, как это можно автоматизировать, и оставляем для мозгов действительно сложные задачи, требующие творчества.
Программа представляет собой структурированный код, верно? У этого кода есть уровни вложенности, инкапсуляции и т.д. Структуры, описываемые этим кодом, все ближе напоминают семантические сети, которые проще всего описывать графами. Имхо, программирование постепенно к этому и стремится. Соответственно, средства программирования (в т.ч. представление исходного кода программы) тоже рано или поздно поменяет свою форму на более приемлемую.
Не подумайте, что я предлагаю уйти от текстовой формы, нет! Она очень удобна. Но ее внутреннее представление логичнее хранить в виде дерева, а еще лучше — графа со ссылками. Тогда программа сама по себе будет напоминать большой индекс, работа с которым для IDE (а также для тех, кто пишет макросы) будет гораздо проще. А, следовательно, благодаря упрощению одного из элементов цепи поддержки работы, появится возможность создания более продвинутых средств программрования.
Т.е. все как обычно. Автоматизируем все, что можем представить, как это можно автоматизировать, и оставляем для мозгов действительно сложные задачи, требующие творчества.
Думаю, через некоторое время появится язык а-ля SQL для исходного кода, позволяющий искать дубликаты или использование характеных паттернов :-) А также вычленять модули и подсистемы на основе связности классов.
P.S. Ставить прогноз на велечиную этого «некоторого времени» не берусь — очень уж динамично все развивается, и слишком много внешних факторов, не относящихся к программированию как таковому.
P.S. Ставить прогноз на велечиную этого «некоторого времени» не берусь — очень уж динамично все развивается, и слишком много внешних факторов, не относящихся к программированию как таковому.
в принципе, в той же visual studio можно открыть class view, где код будет представлен в виде классов, внутри которых функции и т.д.
в общем, дерево и есть.
так что это уже в известном смысле реализовано.
в общем, дерево и есть.
так что это уже в известном смысле реализовано.
если вы просто хотите, чтобы выполнялась или не выполнялась какая-то работа (свет горит), то да, ваш идеал вполне достижим.
REPNZ JMP 00434037 — а это как???
Только добрался спросить. А что он даёт?
Ну кроме того, что это (вполне вероятно) добротный язык. Какое новое пространство мысли (по сравнению с набором C++ + Haskell + Forth, допустим) он откроет?
Ну кроме того, что это (вполне вероятно) добротный язык. Какое новое пространство мысли (по сравнению с набором C++ + Haskell + Forth, допустим) он откроет?
Саморазвитие, безусловно, нужно, иначе мозг закостенеет. Но с другой стороны, вспомнит ли вас добрым словом коллега, когда ему надо будет срочно исправить ошибку в вашем модуле на Форте или дработать его, пока вы в отпуске, или если ушли из проекта, или же продали его?
Я не призываю писать на Форте или Хаскеле. Я хочу понять, чему программиста на Джаве или С++ может научить немейнстримный язык.
Программиста на джаве даже брейнфак может научить писать короче.
Почти все языки из TIOBE имеют встроенные типы, которые соответствуют тому, что умеет процессор: целые и float-ы. Это всё бухгалтерские типы.
насколько известно, компьютеры предназначены были, есть и будут для расчетов. за последние десятилетия эти расчеты превратились в обработку мультимедиа.
в основе лежит математика, будь то игра, обработка видео, моделирование. и как без float и т.п. обойтись?
И все языки эти возникли во времена, когда не было экранов с приличной графикой, а были знакоместа.
не понял смысла.
хотя я всегда возмущался, что в фотошопе или в 3d-max одной мышки ну очень мало.
без скриптования в 3ds max потолок «ручной» правки быстро достигает максимального значения.
Бухгалтерский тип decimal, float — научный.
Нет «программиста на жаве» и «программиста на C++» (равно как нельзя делить писателей на категории «писатели на французском»/«писатели на английском»)
Есть программисты, решающие задачи написания, допустим, почтового клиента для Windows (тут многие предпочтут С++) или игрушки для социальной сети (тут Flash) или верстки html (тут PHP/Perl) и так далее.
Разумеется, «писателей калькуляторов на андроид для заработка в маркете» сейчас больше, чем «писателей jabber-серверов на эрланге», поэтому жава в рейтинге стоит выше эрланга
Если жизнь заставляет человека решать новые задачи — придется освоить новый язык.
Заметьте — не обязательно язык программирования — если вы переехали из России в Бурунди то для решения бытовых задач вам придется выучить ихний суахили. Вы хотите понять что русскому человеку может дать знание суахили? В принципе, русский человек со знанием суахили ничем не отличается от такого же без знания суахили, кроме знания суахили (sic). Просто он может решать задачи используя это знание в тех условиях которые даст жизнь.
Я сожалею, что не знаю хаскелей, эрлангов, скал и многих других популярных и не очень языков. К счастью, пока мне не приходится решать задачи, где подобные знания бы пригодились. В реальной жизни приходится выбирать — либо совершенствовать свои навыки в чем-то конкретном, либо заниматься саморазвитием вширь и на будущее. Каждый пропорции выбирает для себя.
Есть программисты, решающие задачи написания, допустим, почтового клиента для Windows (тут многие предпочтут С++) или игрушки для социальной сети (тут Flash) или верстки html (тут PHP/Perl) и так далее.
Разумеется, «писателей калькуляторов на андроид для заработка в маркете» сейчас больше, чем «писателей jabber-серверов на эрланге», поэтому жава в рейтинге стоит выше эрланга
Если жизнь заставляет человека решать новые задачи — придется освоить новый язык.
Заметьте — не обязательно язык программирования — если вы переехали из России в Бурунди то для решения бытовых задач вам придется выучить ихний суахили. Вы хотите понять что русскому человеку может дать знание суахили? В принципе, русский человек со знанием суахили ничем не отличается от такого же без знания суахили, кроме знания суахили (sic). Просто он может решать задачи используя это знание в тех условиях которые даст жизнь.
Я сожалею, что не знаю хаскелей, эрлангов, скал и многих других популярных и не очень языков. К счастью, пока мне не приходится решать задачи, где подобные знания бы пригодились. В реальной жизни приходится выбирать — либо совершенствовать свои навыки в чем-то конкретном, либо заниматься саморазвитием вширь и на будущее. Каждый пропорции выбирает для себя.
Мне кажется, вы слегка упрощаете.
Если вы работаете с языками (VB.NET, Java, C#) вам будет сравнительно нетрудно перепрыгнуть с одного языка на другой. Это вопрос пары месяцев интенсивной практики. Аналогично, с Haskell на Standard ML.
Если же вы в глаза не видели Haskell, перейти на него с Java будет очень трудно. Поэтому я бы хотел охватить некий минимальный базис языков, который позволяет себя чувствовать комфортно.
Грубо говоря, если есть выбор — изучить VB.NET, Java и C# или Java, Haskell, Forth, конечно, я выберу второй вариант, потому что он лучше подготавливает к возможному «многоборью» в условиях разных языков.
Если вы работаете с языками (VB.NET, Java, C#) вам будет сравнительно нетрудно перепрыгнуть с одного языка на другой. Это вопрос пары месяцев интенсивной практики. Аналогично, с Haskell на Standard ML.
Если же вы в глаза не видели Haskell, перейти на него с Java будет очень трудно. Поэтому я бы хотел охватить некий минимальный базис языков, который позволяет себя чувствовать комфортно.
Грубо говоря, если есть выбор — изучить VB.NET, Java и C# или Java, Haskell, Forth, конечно, я выберу второй вариант, потому что он лучше подготавливает к возможному «многоборью» в условиях разных языков.
Я сожалею, что не знаю хаскелей, эрлангов, скал и многих других популярных и не очень языков.
Большинство остальных языков похожи друг на друга, поэтому, зная C++, C#, Java, может создаться ложное впечатление, что все языки похожи и можно их выучить, когда потребуется.
Однако есть набор разных языков, знание одного из них мало поможет вам понять другие. Я считаю, что такие языки надо знать, ибо они как базис в пространстве языков.
Я бы отнёс к таким C++, Haskell, Erlang, LISP, Forth.
Лично мне Haskell очень сильно мозги развернул.
Многие начинающие C++-программисты (и уж тем более не-С++-программисты), чисто к примеру, плюются на трехэтажные конструкции STL, не понимают назначения std::bind1st, std::bind2nd и т.д. С изучением Haskell я заметил, что и мой подход к программированию на С++ изменился в лучшую сторону. Многие вещи удалось разложить по полочкам в голове. Так что польза есть.
Ничего в этом страшного нет. Нельзя гарантровать, что автор всегда будет где-то рядом с кодом, который он написал. Мало ли используется проектов, которые были когда-то кем-то брошены? А с какой стороны характеризует программиста его нежелание что-то изучить, пусть ради небольшой правки? Программист — это не тот, кто знает языки А, В и С и не знает всё остальное. Поддерживаю тезис, что нужно программировать не на языке, а с использованием языка. Почему когда кто-то использует что-то немейнстримовое, остальные на него катят бочку? А ведь он, очевидно, знает и умеет больше них, — ведь они, по-вашему, работают вместе. Но напарники этого человека уже придумали себе будущие проблемы и обвиняют человека заранее, забыв о презумпции невиновности.
Одно из самых больших заблуждений-мысль, что язык программирования служит для общения с компьютером, язык программирования -это в первую очередь средство для общения людей по поводу программирования.
Если у языка программирования есть заметное количество «носителей», то он не может считаться мёртвым.
Языки, которые по своему виду далек от привычных большинству конструкций довольно приводит к ненужным затратам на поддержание кода.
Языки программирования, принадлежащие какой-либо компании делают программистов клиентами и в некотором смысле заложниками политики этой компании.Таким образом вложения в код, становятся зависимыми от действий внешних организаций.
Если у языка программирования есть заметное количество «носителей», то он не может считаться мёртвым.
Языки, которые по своему виду далек от привычных большинству конструкций довольно приводит к ненужным затратам на поддержание кода.
Языки программирования, принадлежащие какой-либо компании делают программистов клиентами и в некотором смысле заложниками политики этой компании.Таким образом вложения в код, становятся зависимыми от действий внешних организаций.
язык — это средство решения конкретной задачи в конкретных условиях
для связи кораблей в открытом море N лет назад использовали азбуку Морзе и флажной семафор
это решало задачу передачи информации.
другими способами передачи информации можно считать голубиную почту, тамтам, рынду, костры (и их модифицированные аналоги)
латынь — это в настоящее время (уже прошедшее?) язык для передачи сообщения от врача к фармацевту на специальных перфокартах… тьфу! на бланках!
задача при программировании заключается в передаче алгоритма из мозга автора исполнителю (чаще всего, но не всегда исполнителем является компьютер). язык программирования — способ записи алгоритма. соответственно язык должен соответствовать (1) автору (2) решаемой задаче (3) исполнителю.
в нашем мире меняемся и мы (авторы), меняются и исполнители, меняются и задачи.
так что выбор языка программирования — это функция от как минимум трех переменных, даже без учета переменной t
для связи кораблей в открытом море N лет назад использовали азбуку Морзе и флажной семафор
это решало задачу передачи информации.
другими способами передачи информации можно считать голубиную почту, тамтам, рынду, костры (и их модифицированные аналоги)
латынь — это в настоящее время (уже прошедшее?) язык для передачи сообщения от врача к фармацевту на специальных перфокартах… тьфу! на бланках!
задача при программировании заключается в передаче алгоритма из мозга автора исполнителю (чаще всего, но не всегда исполнителем является компьютер). язык программирования — способ записи алгоритма. соответственно язык должен соответствовать (1) автору (2) решаемой задаче (3) исполнителю.
в нашем мире меняемся и мы (авторы), меняются и исполнители, меняются и задачи.
так что выбор языка программирования — это функция от как минимум трех переменных, даже без учета переменной t
> причём язык одинокий в своей идеологии (в отличие от языков Haskell и Erlang, имеющих массу родственников)
Самый известный родственник Forth это Factor, но есть и другие: www.concatenative.org/wiki/view/Front%20Page
Самый известный родственник Forth это Factor, но есть и другие: www.concatenative.org/wiki/view/Front%20Page
А Factor смотрели? Замечательный пример стекового (они используют другой термин — «конкатенативный») языка. Синтаксические и базовые семантические идеи взяты из Форта, но при этом есть симпатичная объектная система, довольно крутое метапрограммирование (на мой взгляд проще и мощнее Common Lisp-ового) и куча стандартных библиотек.
А чем там метапрограммирование круче Common Lisp-ового? Спрашиваю, потому что не в курсе
На Factor сам язык в значительной мере является библиотекой к языку. Средствами Factor для него же созданы: макры (если я правильно помню, в CL макры являются встроенными единицами, а не внешними), объектная система, треды, лексические и динамические переменные, продолжения (continuations) — все это библиотеки к языку.
Я в этом точно не уверен, но большая часть этих фич в CL казалась мне встроенной.
Я в этом точно не уверен, но большая часть этих фич в CL казалась мне встроенной.
Много лет назад изучал форт, помню на нем реально было сделать нормальную запись выражений, не в обратной польской записи. Больше всего понравилась реализация циклов и управляющих структур. Книжка правда старой была, но знания в ней бесценны. Названия увы не припомню.
У меня она дома по-моему валяется, лень искать правда.
Это не тема нашего обсуждения в данном топике.
«Страустрап» — вообще такого автора нет.
Он не использует, а я использую.
Топик — не об используемых книгах, а о том, какие нестандартные подходы к программированию полезны сегодня. Если вам они неинтересны, это ещё не значит, что их нельзя применить.
Он не использует, а я использую.
Топик — не об используемых книгах, а о том, какие нестандартные подходы к программированию полезны сегодня. Если вам они неинтересны, это ещё не значит, что их нельзя применить.
В данном топике вы не писали никаких конструктивных вещей, только критику.
Указанная книга мне известна, да только это единственное написание «Страустрап», сделанное в тёмные 90-е годы непонятно откуда взявшим это написание переводчиком. Что, повторять теперь его ошибку? Почитайте более свежие книги того же автора.
Указанная книга мне известна, да только это единственное написание «Страустрап», сделанное в тёмные 90-е годы непонятно откуда взявшим это написание переводчиком. Что, повторять теперь его ошибку? Почитайте более свежие книги того же автора.
Вот скажите, зачем вы это пишете? Вы из принципа не хотите никакого конструктива? Чем обвинять меня в том, что я не читаю ваших полезных комментариев, дайте ссылку на комментарий.
Я рад, что люди выпускали хорошие книжки, но надеялся, что вы что-то новое успели прочесть за последние 17 лет. Тем более, хорошего автора.
Я рад, что люди выпускали хорошие книжки, но надеялся, что вы что-то новое успели прочесть за последние 17 лет. Тем более, хорошего автора.
Форт здесь исключительно ради примера, я не хотел обсуждать Форт. Вы пишете про «нетекстовые языки». Я не совсем понимаю, о чём речь.
Сам я лично слабо верю в них по куче самых разных причин. Приводил уже ссылку на Intentional Programming, автору которого склонен доверять как профессионалу.
С другой стороны, визуальные языки вроде Labview/Simulink существуют в своих областях; это не будущее, это настоящее :)
Сам я лично слабо верю в них по куче самых разных причин. Приводил уже ссылку на Intentional Programming, автору которого склонен доверять как профессионалу.
С другой стороны, визуальные языки вроде Labview/Simulink существуют в своих областях; это не будущее, это настоящее :)
Charles Simonyi — вовсе не «какой-то», а один из основателей Microsoft, потративший годы и кучу ресурсов на нетекстовые языки. Т.е. я точно знаю, что он занимался этим направлением предметно, его команда реально создала такой язык и продвигала его. Не вышло. Я не говорю, что я вам не доверяю, я просто не знаю о вашем нетекстовом языке и о том, где он используется.
То, о чём вы пишете — это как раз Intentional programming. Об этом восхищённо пишет Чарнецки в монографии «Порождающее программирование» (которую рекомендую).
Суть как раз в том, чтобы создать среду проектирования, позволяющую создавать собственные графические domain-specific languages. Если вы пишете математическую систему, там будут красивые интегралы и суммы, а если моделируете электроцепь — резисторы и конденсаторы.
На бумаге это выглядит всё очень хорошо, но на практике не выстрелило, хотя были затрачены годы труда мощных разработчиков. Я понимаю, что неуспех ещё не доказательство, но мне рассуждения на эту тему кажутся не очень продуктивными. Потому что если объявить эксперимент Intentional programming «первым блином», значит, нужен второй блин, за который возьмётся крупная сильная команда. Я пока такой команды не вижу.
То есть обсуждать эти идеи на хабре можно лишь теоретически. А предметно надо идти к Гуглу или кому-нибудь в этом роде.
То, о чём вы пишете — это как раз Intentional programming. Об этом восхищённо пишет Чарнецки в монографии «Порождающее программирование» (которую рекомендую).
Суть как раз в том, чтобы создать среду проектирования, позволяющую создавать собственные графические domain-specific languages. Если вы пишете математическую систему, там будут красивые интегралы и суммы, а если моделируете электроцепь — резисторы и конденсаторы.
На бумаге это выглядит всё очень хорошо, но на практике не выстрелило, хотя были затрачены годы труда мощных разработчиков. Я понимаю, что неуспех ещё не доказательство, но мне рассуждения на эту тему кажутся не очень продуктивными. Потому что если объявить эксперимент Intentional programming «первым блином», значит, нужен второй блин, за который возьмётся крупная сильная команда. Я пока такой команды не вижу.
То есть обсуждать эти идеи на хабре можно лишь теоретически. А предметно надо идти к Гуглу или кому-нибудь в этом роде.
Там нет никакого искусственного интеллекта. Там суть проста: надо разговаривать с компьютером на языке предметной области.
Т.е. если нужна математика, рисуете формулы.
Если нужна электротехника, рисуете цепи.
Авторы справедливо пишут, что на С цепи рисовать как-то трудно.
Так что в принципе тут ничего не выходит за рамки традиционного программирования, просто вместо текстового языка вам дают возможность создавать и графические средства выражения своих мыслей.
Т.е. если нужна математика, рисуете формулы.
Если нужна электротехника, рисуете цепи.
Авторы справедливо пишут, что на С цепи рисовать как-то трудно.
Так что в принципе тут ничего не выходит за рамки традиционного программирования, просто вместо текстового языка вам дают возможность создавать и графические средства выражения своих мыслей.
Пока что вашу идею я понять не могу, потому что «Синергия человеческого интеллекта и машинной безошибочности» — слишком неформальное определение. Изложите поподробнее. Если нравится LabView — ну так можно писать на LabView, система уже есть.
Примечательно, что Scheme находится на 29ом месте, обгоняя даже Erlang и Haskell. Возможно, благодаря наличию over 9000 реализаций и присутствию разных диалектов языка в CAD'ах, GIMP'е и т. д.
О, Форт, мой третий язык (после асма и бэйсика). Не могу сказать, что его изучение принесло много практической пользы, даже хоть какую-то не принесло, но кругозор расширило однозначно, прежде всего принципы работы трансляторов узнал, идея «шитого» кода очень понравилась (реализовывал прямую), куда больше, чем байт-кода.
Но вот практической пользы… Даже идея писать модули на Форте в голову не приходила, проще на Си/Асме. Хотя для «встраиваемых» систем, возможно, Форт будет неплохим выбором, даже лучше чем Си. Но вот беда, я не работаю с ними.
Но вот практической пользы… Даже идея писать модули на Форте в голову не приходила, проще на Си/Асме. Хотя для «встраиваемых» систем, возможно, Форт будет неплохим выбором, даже лучше чем Си. Но вот беда, я не работаю с ними.
Вообще рейтинг не очень репрезентативный. Я, как программирующий на LabVIEW, слежу за положением языка в этом рейтинге (он выпал вообще, как это верно замечено). Но вот, что удивительно — в том же рейтинге находится NXT-G, который находится в данный момент на 25-м месте, опережая Фортран, Эрланг и другие языки. При этом надо заметить, что NXT-G вообще говоря является в некоторой мере клоном LabVIEW (и, кстати сама среда фактически написана на LabVIEW), да и полноценным языком его можно с большой натяжкой назвать. А популярность его обусловлена исключительно тем, что NXT-G используется в конструкторах LEGO Mindstorm NXT. Скорее всего, в статистике каким-то образом LEGO учитывается, оттого NXT и поднялся в рейтинге. Google Trends я бы сказал, даёт более адекватные результаты:
LabVIEW, Mindstorm, NXT-G
LabVIEW, haskell, erlang, fortran
LabVIEW, Mindstorm, NXT-G
LabVIEW, haskell, erlang, fortran
Мне кажется, что всегда имеет смысл познакомиться с другим языком. Хотя бы для общего развития. Однако всерьез программировать на не мейнстримовых языках трудно, так как они медленно развиваются (если вообще это делают). Потом встает вопрос среды разработки. Я сомневаюсь, что есть какая-то пригодная среда для разработки на языке Форт (Notepad не предлагать). Для не мейнстримовых языков нет фрейворков или каких-то библиотек. Написание на Алголе или Форте веб-приложения или приложения под iOS сродни посту в блог ненормальное программирование.
Мне кажется, не всё так плохо. Конечно, Форту и иже с ними недостаёт библиотек и прочих «примочек», но на них можно писать отдельные модули и интегрировать их в «мейнстримную» систему.
Более того, если завтра какую-нибудь монструозную библиотеку вроде Qt решат переписать для Форта или Хасекля, я первым буду возражать: зачем? Пусть GUI будет на C++, а остальное можно и на другом языке написать.
Более того, если завтра какую-нибудь монструозную библиотеку вроде Qt решат переписать для Форта или Хасекля, я первым буду возражать: зачем? Пусть GUI будет на C++, а остальное можно и на другом языке написать.
Не встречались с программой nnCron? Написана на Форте сама и использует его в качестве языка пользовательских скриптов. В комменте выше соврал, совсем забыл про эту прогу — довольно много скриптов под неё написал для автоматизации рутинных действий. PowerShell'ом тогда и не пахло под виндой, возможностей батников не хватало, а вот Форт к месту пришелся.
пользовался nnbackup :)
Ну согласитесь, что это не идет в сравнение с, например, YII для PHP.
Это надо сравнивать скорее с какой-нибудь Qt. А вот веб фреймворк может быть достаточно интересным на Форте. Сравним скорее с руби и рельсами, с их любовью к созданию DSL на каждый чих )) Ведь Форт, по сути, и есть язык создания DSL. Снизу вверх указываем транслятору как на какое слово реагировать, при этом почти ничем не ограничиваясь, пока не доходим до человеческого языка, причём писать можно и по-русски ) Синтаксиса как такового нет, зарезервированных слов тоже.
Ну просто PHP + YII первое что пришло в голову. Не хочу показаться фортоненавистником, но все же на Форте не сделали ни аналога Qt, ни веб-фреймворка.
Вот весь вопрос, который я предлагаю обсудить, как раз и состоит в следующем: что мы можем извлечь из языков, которые по той или иной (объективной или субъективной) не выстрелили.
Знаете, мне вспомнилась одна статья Криса Касперски. Может кому-нибудь будет интересно. Я в свое время с большим удовольствием ее прочитал и надолго задумался.
www.itspecial.ru/theme/jazyki-kotorye-my-poterjali/10114/default.asp
www.itspecial.ru/theme/jazyki-kotorye-my-poterjali/10114/default.asp
Например, используя принципы работы Форт-машин довольно легко, по-моему, создавать трансляторы высокоуровневых пользовательских DSL для приложений на любых языках. Первое что приходит в голову в силу специализации — DSL для трансляции в HTML/CSS и SQL для того, чтобы пользователи какого-то ресурса могли почти человеческим языком описывать свои страницы и данные на них. Заготавливаем базовые примитивы, а они на их основе определяют свои и компонуют их. Обратной польской записи и стековой машины придерживаться необязательно, ближе к функциональным языкам должно быть наверное по внешнему виду, но вот трансляция по принципу фортмашины.
«Голый» язык довольно низкоуровневый, ближе к ассемблеру, чем даже к Си. Думаю просто очень трудоемко.
Да, кстати, а как язык Logo попал в этот список?
Sign up to leave a comment.
Субботние записки: О мёртвых языках и живой практике