Здравствуйте, INTP_mihoshi, Вы писали:
INT>С++ — гениальная вещь как набор практик и решений. Но, так как он строился инкрементно и тащит на себе все старые решения, на настоящий день отточенная семантика погребена под разлагающимся синтаксисом. Например, generic programming вообще и функциональное программирование в частности загноблены именно им.
А можно чуть подробнее — каким образом C++ загнобил ФП, не являясь функциональным языком? ИМХО в этом может быть повинно только лишь неспособность самим ФЯ составить реальную конкуренцию...
Опровергни меня.
kuj>>>P.S. Запомните: язык для задачи, а не задача для языка. Д>>хто бы спорил. вот современные задачи и породили C с его потомками kuj>Современные породили Java/.NET Languages.
В которую Delphi вписывается элементарно. Более того C# и Delphi настолько похожи, что не взирая на С синтаксис дельфисты считают его почти родным языком. Как впрочеим и Java. И поверь это не мое единичное мнение. И суть не в синтаксисе.
Но все доводы применяемые против Delphi можно применить и к Java и Net, но именно они будут править бал.
Все достаточно субъективно, и нужно оценивать сегодняшнюю ситуацию. А вот влияние Вирта на их развитие очень большое, как и других основоположников. А с точки зрения программирования язык должен легко читатся, не иметь разночтений, и быть достаточно гибким.
Каков идеальный язык я не знаю, посмотрим.
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Mink, Вы писали:
INT>>Да. Учиться говорить вообще важнее, чем на каком-то языке конкретно.
M>Каким образом? Собственно, понятие говорить неотделимо от языка.
От какого языка? От русского? Или от английского? Будет ли человек, умеющий излагать мысли на одном языке уметь это и на другом, ему известном? Поможет ли знание одного языка лучше пользоваться другим? Сводится ли филология к изучению языка?
Я это к тому, что общение (и "говорение")- это нечто гораздо болшее, чем "просто язык". Скажем, умелый сержант может с помощью набора в десяток русских слов управлять взводом горных таджиков, даже если они русского языка не знают И новорожденный ребенок очень эффективно общается с матерью еще не зная ни одного языка.
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Здравствуйте, Mink, Вы писали:
INT>>>Да. Учиться говорить вообще важнее, чем на каком-то языке конкретно.
M>>Каким образом? Собственно, понятие говорить неотделимо от языка.
INT>От какого языка? От русского? Или от английского? Будет ли человек, умеющий излагать мысли на одном языке уметь это и на другом, ему известном? Поможет ли знание одного языка лучше пользоваться другим? Сводится ли филология к изучению языка?
INT>Я это к тому, что общение (и "говорение")- это нечто гораздо болшее, чем "просто язык". Скажем, умелый сержант может с помощью набора в десяток русских слов управлять взводом горных таджиков, даже если они русского языка не знают И новорожденный ребенок очень эффективно общается с матерью еще не зная ни одного языка.
INT>Впрочем, это все (почти) оффтоп.
По существу не согласен, но согласен, что офф топ, поэтому не буду развивать тему
Здравствуйте, Курилка, Вы писали:
INT>>С++ — гениальная вещь как набор практик и решений. Но, так как он строился инкрементно и тащит на себе все старые решения, на настоящий день отточенная семантика погребена под разлагающимся синтаксисом. Например, generic programming вообще и функциональное программирование в частности загноблены именно им.
К>А можно чуть подробнее — каким образом C++ загнобил ФП, не являясь функциональным языком? ИМХО в этом может быть повинно только лишь неспособность самим ФЯ составить реальную конкуренцию... К>Опровергни меня.
С++ — самый настоящий функциональный язык. Он позволяет делать практически все то, что есть в "классических" функциональных языках. Отличие только в том, что то, в ML и Haskell является основой языка и поддержано синтаксисом по самое не могу, в С++ является поздней нашлепкойи сделано по принципу "чтоб було и самые видные дыры закрывало".
Я говорю о шаблонах. Современные ФЯ — это языки, которые целиком построены на технологии, эквивалентной шаблонам в С++. В ML даже видны "хвосты" этой реализации в синтаксисе — ключевое слово rec, которое используется при определении рекурсивных функций, из-за того что их нельзя напрямую реализовать через шаблоны.
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Здравствуйте, Курилка, Вы писали:
К>>А можно чуть подробнее — каким образом C++ загнобил ФП, не являясь функциональным языком? ИМХО в этом может быть повинно только лишь неспособность самим ФЯ составить реальную конкуренцию... К>>Опровергни меня.
INT>С++ — самый настоящий функциональный язык. Он позволяет делать практически все то, что есть в "классических" функциональных языках. Отличие только в том, что то, в ML и Haskell является основой языка и поддержано синтаксисом по самое не могу, в С++ является поздней нашлепкойи сделано по принципу "чтоб було и самые видные дыры закрывало".
INT>Я говорю о шаблонах. Современные ФЯ — это языки, которые целиком построены на технологии, эквивалентной шаблонам в С++. В ML даже видны "хвосты" этой реализации в синтаксисе — ключевое слово rec, которое используется при определении рекурсивных функций, из-за того что их нельзя напрямую реализовать через шаблоны.
Ты на вопрос-то не ответил! Как загнобил-то?
Ну можно на нём в терминах ФЯ программить, это есть, но это :
1. не обязательно
2. нигде особо не офишируется и не ассоциируется наподобие — "C++ — самый ходовой ФЯ"
Hello, INTP_mihoshi!
You wrote on Wed, 19 May 2004 11:29:27 GMT:
Im> С++ — самый настоящий функциональный язык. Он позволяет делать Im> практически все то, что есть в "классических" функциональных языках. Im> Отличие только в том, что то, в ML и Haskell является основой языка и Im> поддержано синтаксисом по самое не могу, в С++ является поздней Im> нашлепкойи сделано по принципу "чтоб було и самые видные дыры Im> закрывало".
Im> Я говорю о шаблонах. Современные ФЯ — это языки, которые целиком Im> построены на технологии, эквивалентной шаблонам в С++. В ML даже видны Im> "хвосты" этой реализации в синтаксисе — ключевое слово rec, которое Im> используется при определении рекурсивных функций, из-за того что их Im> нельзя напрямую реализовать через шаблоны.
Только ты забыл добавить, что этот ФЯ — исключительно компайл-тайм язык.
Best regards,
Sergey.
Posted via RSDN NNTP Server 1.9 alpha
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, Serginio1, Вы писали:
kuj>>>>P.S. Запомните: язык для задачи, а не задача для языка. Д>>>хто бы спорил. вот современные задачи и породили C с его потомками kuj>>Современные породили Java/.NET Languages. S> В которую Delphi вписывается элементарно. Более того C# и Delphi настолько похожи,
Ага, похожи. Только вся их похожесть заканчивается на операторах as, is. S>что не взирая на С синтаксис дельфисты считают его почти родным языком. S>Как впрочеим и Java.
Наши дельфисты вовсе так не считают. И правильно делают. S>И поверь это не мое единичное мнение.
Верю. Но это не значит, что все так думают. S> Но все доводы применяемые против Delphi можно применить и к Java и Net,
Вот сие есть грубая неправда.
Здравствуйте, kuj, Вы писали:
kuj>Здравствуйте, Serginio1, Вы писали:
kuj>>>>>P.S. Запомните: язык для задачи, а не задача для языка. Д>>>>хто бы спорил. вот современные задачи и породили C с его потомками kuj>>>Современные породили Java/.NET Languages. S>> В которую Delphi вписывается элементарно. Более того C# и Delphi настолько похожи, kuj>Ага, похожи. Только вся их похожесть заканчивается на операторах as, is.
Я уже более мегабайта кода перевел с Delphi на C# и обратно и поверь это небольшая проблема. S>>что не взирая на С синтаксис дельфисты считают его почти родным языком. S>>Как впрочеим и Java. kuj>Наши дельфисты вовсе так не считают. И правильно делают.
Это их проблемы. Мои баттерфляисты мнения. S>>И поверь это не мое единичное мнение. kuj>Верю. Но это не значит, что все так думают.
Согласен. S>> Но все доводы применяемые против Delphi можно применить и к Java и Net, kuj>Вот сие есть грубая неправда.
Пусть будет так. Но на всякий случай с Днем Пионерии!!!
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, desperado_gmbh, Вы писали:
_>Здравствуйте, Шахтер, Вы писали:
Ш>>Забыло напрочь. Даже в советские времена на русский язык переводилось явно недостаточное количество зарубежной научной литературы. После краха СССР это вообще прекратилось.
_>Кстати, в этом году вышло второе издание знаменитых "Категорий для работающего математика" Маклейна в переводе В.А.Артамонова (оригинал — 1998 год). Хороший перевод, качественная верстка, практически нет ошибок.
А я и не знал, что Маклейна переводили. Я в своё время читал его в подлиннике.
_>И есть надежда, что у "Физматлита" когда-нибудь кончатся советские переводы для перепечатки, и ему придется заняться новыми.
Здравствуйте, SWW, Вы писали:
LVV>> Я вижу в своем воображении образцовый учебник в качестве подходящего исходного пункта. Он должен удовлетворять следующим критериям:
LVV>>Начинаться сжатым введением в основные понятия программного проектирования. LVV>>Использовать лаконичную формальную нотацию, строго определенную не более чем на примерно 20 страницах. SWW><...>
SWW>Глупости. Это был бы худший учебник, какой только можно придумать. Он был бы понятен только тому, кто уже знает язык. SWW>Практика же показывает, что лучший учебник — это Керниган-Ритчи, который безо всяких формальных нотаций с первой же страницы предлагает писать простую программу.
День добрый...
Какой язык?! Человек предлагает учить не языку, но программированию — как конструктивному мышлению. А вы про язык.
Проблема-то как раз в том, что все "учебники" по программированию — суть пособие по какому-либо языку. А это вытекает из того, что нет единой нотации — той у которой упоминает Вирт, что "не более чем на примерно 20 страницах" — которую можно и нужно вводить. У всех есть — а у нас — нет.
С этой точки срения мы напоминаем мне филологов — которые между собой вполне друг друга понимают, а вот другим объяснить ничего не могут Вы слышали их "определение" ямба и хорея — то, которым они действительно пользуются? Я плакал. Так и мы...
Здравствуйте, Шахтер, Вы писали:
Ш>3) Попробую сформулировать свою мысль. Не уверен, что делаю это вполне ясно. Ш>Возьмем, для примера, современную математику. Математика НЕ строится на базе какого-то формального языка. Хотя технически это можно сделать, причем соответствующий язык будет попроще Паскаля.
День добрый...
В математике, есть единая формальная нотация — сиречь формальный язык. Это означает, что любое математическое выражение на любом — естественном или искуственном языках — всегда СВОДИТСЯ к выражению или цепочки выражений в этой натации — его можно выразить в этой натации. Эта нотация действительно "попроще Паскаля" — т.к. вдоль и поперёк формализована — это огромный плюс, т.к. такая нотация не терпит исключений и не допускает разночтений.
Ш>Вот только данный путь почему-то не привлекает никого. Потому что если так работать, то доказать можно будет разве что 2+2=4. Не годится такой подход для сложных задач.
Язык — это не средство доказательства, но средство выражение мысли. Использую математическую натацию вы всегда ясно и однозначно выражаете математическую мысль. Сам процесс доказательства не имеет к языку (математической нотации) непосредственного отношения, и, принципиально, может вестись на любом языке (хоть на русском, хоть на английском, хоть на С, хоть на Паскале ), но при доказательстве "математической мысли", если Вы действительно хотите чтобы Вас поняли, Вам сложно будет отказаться от математической нотации.
Ш>Математики предпочитают работать с очень усложнённым и не формализованным языком(языками) для выражения своих мыслей. С++ до него ой как далеко (про остальных вообще помалкиваем в тряпочку). Если кто выдел хорошо изданные книги по современной математике -- обратите на количество разных шрифтов, которое там используется.
Примеры в студию. "Количество разных шрифтов, которое там используется" — не есть доказательство сложности и не формализованности. Лишь показатель того что в конкретном шрифте отсутсвует тот или иной знак нотации, а в другом он есть
Ш>И в программировании мы наблюдаем то же самое. C++ гораздо более подходит для создания больших и сложных систем, чем всякие Жабы. И я думаю, дальше будет только хуже в этом смысле. Эволюция языков программирования будет идти в сторону сложности и меньшей формальности. Прямо в противоположном направлении, которое хочет тов. Вирт.
Имхо, или я тупой, или одно из двух Как я понял статью — Вирт ратует за создание, назовем это так, программисткой формальной нотации — с помошью которой можно было бы ясно и однозначно выражать программисткую мысль. И сетует, что в качестве таковой де факто избран С — который для этого, мягко говоря, не очень пригоден, так как не достаточно формализован.
Попытаюсь ещё раз пояснить свое видение смысла статьи... У математиков есть математическа нотация, у музыкантов — нотная (можно ряд продолжить и дальше) — все это вещи предназначенные для ясного и однозначного (не допускающего разночтений) выражения мысли. У программистов — у нас — такой вещи нет. А очень бы хотелось.
---
С уважением, Сиваков Константин.
G>Какой язык?! Человек предлагает учить не языку, но программированию — как конструктивному мышлению. А вы про язык.
G>Проблема-то как раз в том, что все "учебники" по программированию — суть пособие по какому-либо языку.
Для меня учебники по программированию — это Кормен, Седжвик и т.п. То есть учебники, в которых описываются алгоритмы.
G> А это вытекает из того, что нет единой нотации — той у которой упоминает Вирт, что "не более чем на примерно 20 страницах" — которую можно и нужно вводить.
А для этого никакая нотация не нужна.
А то, что предлагает Вирт — это попытка лузера снова протолкнуть свой паскаль под другим соусом, раз уж он не состоялся как язык программирования.
G> У математиков есть математическа нотация, у музыкантов — нотная (можно ряд продолжить и дальше) — все это вещи предназначенные для ясного и однозначного (не допускающего разночтений) выражения мысли.
С одной стороны, математическая нотация не так уж однозначна: достаточно сказать, что в одних странах в качестве десятичного разделителя используется точка, в других — запятая. Если в таком простом вопросе нет единства, что уж говорить о более сложных вещах.
С другой стороны, язык С достаточно строго формализован — по крайней мере достаточно для того, чтобы описывать на нем алгоритмы и при этом программисты разных стран тебя понимали.
G> У программистов — у нас — такой вещи нет. А очень бы хотелось.
Здравствуйте, SWW, Вы писали:
SWW>С одной стороны, математическая нотация не так уж однозначна: достаточно сказать, что в одних странах в качестве десятичного разделителя используется точка, в других — запятая. Если в таком простом вопросе нет единства, что уж говорить о более сложных вещах.
ИМХО любая текстовая или графическая нотация либо неоднозначна, либо громоздка. Но в математике есть точная семантическая нотация, т.е. совокупность однозначно интерпретируемых понятий. Например, поле, или там, целое число — имеют однозначный смысл. А вот в программировании такие, скажем, базовые понятия, как класс и функция понимаются в каждом языке по разному.
Хотя ИМХО уже какая-то система обозначений и культура точных терминов начинает складываться. Например, говорят не просто "система типов", а "система типов Хиндли-Милнера"
G>> У программистов — у нас — такой вещи нет. А очень бы хотелось.
SWW>Есть такая вещь!
Что именно ты имеешь в виду? Я лично вижу две системы: UML и Z-notation. Разумеется, в них многого не хватает, но как база вполне годиться. Особенно, если к UML, наконец, прикрутят стандартное текстовое представление.
Здравствуйте, Kh_Oleg, Вы писали:
B>>Ну тогда вообще надо предать анафеме идею полиморфизма. B>>Ато привыкли, понимаешь, символ + и для сложения int и double ипользовать. B>>Некоторые извращенцы перегружают + для строк и пытаются B>>таким образом конкатенировать строки
K_O>Не надо впадать в крайности. "+" — это символ сложения. В повседеневной жизни мы обычно складываем числа. K_O>А вот "++" — это операция инкремента. Еще нужно объяснять, что это за операция такая, и что для чисел она означает увеличение на единицу. Ну а перегрузка операторов — это вообще из серии "некоторое действие, которое выглядит как сложение, но делает то, что знаю только я!"
Ну а самое большое зло из этой серии — использование свойств вместо прямого доступа к переменной.
Здравствуйте, Kh_Oleg, Вы писали:
K_O>Не надо впадать в крайности. "+" — это символ сложения. В повседеневной жизни мы обычно складываем числа. K_O>А вот "++" — это операция инкремента. Еще нужно объяснять, что это за операция такая, и что для чисел она означает увеличение на единицу. Ну а перегрузка операторов — это вообще из серии "некоторое действие, которое выглядит как сложение, но делает то, что знаю только я!"
Ну если тебе так хочется то ты можешь продолжать писать на языках которые ни чего не умеют, а я буду использовать язык который позволяет мне выражать свои мысли так как я хочу.
Например на С++ можно написать шаблон такого массива что... короче пример
Так на каком языке лучше писать? на том где есть шаблоны и перегрузка операторов или на том где их нет?
ЗЫ Судя по тому что ты говоришь для тебя лучший язык это ассемблер. Простой, понятный, нет неоднозначностей. Просто чудо, а не язык...
ЗЗЫ А тех кто перегружает операторы не интуетивным образом надо сжигать на костре и предавать анафиме... Но такие индивиды не повод отказыватся от перегрузки операторов вобще.
... << RSDN@Home 1.1.3 beta 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, SWW, Вы писали:
G>>Какой язык?! Человек предлагает учить не языку, но программированию — как конструктивному мышлению. А вы про язык. G>>Проблема-то как раз в том, что все "учебники" по программированию — суть пособие по какому-либо языку.
SWW>Для меня учебники по программированию — это Кормен, Седжвик и т.п. То есть учебники, в которых описываются алгоритмы.
Угу... Вот только, скажем так, "придумывание алгоритмов" — не суть программирование
G>> А это вытекает из того, что нет единой нотации — той у которой упоминает Вирт, что "не более чем на примерно 20 страницах" — которую можно и нужно вводить.
SWW>А для этого никакая нотация не нужна.
Для этого — это для чего? Для описания алгоритмов? Может быть... в большинсве своем, для этой задачи достаточно математической нотации. Хотя, опять же, в большинстве своем, получается грамоздко и не прозрачно.
SWW>А то, что предлагает Вирт — это попытка лузера снова протолкнуть свой паскаль под другим соусом, раз уж он не состоялся как язык программирования.
Хм... Вы не согласны с тем, что Паскаль более подходит для обучения программированию (с "нуля" естественно), чем С?!
Собственно, Вирт-то, какраз не столько ратует за то, что бы программированию учить на Паскале, сколько сетует на то, что де факто программированию учат на С — которой для этого пригоден гораздо менее, чем Паскаль.
G>> У математиков есть математическа нотация, у музыкантов — нотная (можно ряд продолжить и дальше) — все это вещи предназначенные для ясного и однозначного (не допускающего разночтений) выражения мысли.
SWW>С одной стороны, математическая нотация не так уж однозначна: достаточно сказать, что в одних странах в качестве десятичного разделителя используется точка, в других — запятая. Если в таком простом вопросе нет единства, что уж говорить о более сложных вещах.
Гы... Скажите пожалуйста, с точки зрения математической нотации есть разница (возможность различного понимания) между:
x = 1.0001 и x = 1,0001
Именно, с точки зрения математической нотации? Думаю, что ответ очевиден — нет... и то и то, десячитная дробь — нотации обсалютно по барабану, какой символ используется в виде десятичного разделителя. Точно также как грамматика не зависит от алфавита а лишь "базируется" на нем.
SWW>С другой стороны, язык С достаточно строго формализован — по крайней мере достаточно для того, чтобы описывать на нем алгоритмы и при этом программисты разных стран тебя понимали.
Ещё раз — не достаточно он формализован!!! Как можно говорить о достаточно формализации языка когда в его синтаксисе есть неоднозначности!!!
На вскидку — некоторые конструкции можно трактовать — либо как объявление, либо как оператор. И это Вы называете — "достаточно формализованный язык"?!
Цитирую по памяти — сильно не пинать...
"выражение, содержащее в качестве своего самого левого подвыражения явное преобразование типа, которое записано в функциональном стиле, может было неотличимо от объявления, в котором первый декларатор начнается с левой круглой скобки".
И что-то типа: "если конструкция выглядит как объявление, то это и есть объявление. В противном случае это оператор".
Я когда читал — плакал...
G>> У программистов — у нас — такой вещи нет. А очень бы хотелось. SWW>Есть такая вещь!