OSDev

для всех
Текущее время: 27 апр 2024, 22:58

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 285 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 29  След.
Автор Сообщение
СообщениеДобавлено: 09 дек 2014, 18:25 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Для создания Си++ надо несколько десятков человеко лет. Компиляторы в одиночку не пишутся. И столько же надо для создания библиотек.
Такие вещи делаются коллективами и длиною 5-7 лет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 дек 2014, 19:30 
Аватара пользователя

Зарегистрирован: 17 фев 2013, 16:13
Сообщения: 163
эмбрион писал(а):
Почитав ваши сообщения прихожу к выводу о неверной постановке задачи.

Тов. эмбрион, возможная ошибка в Ваших рассуждения начинается уже здесь. Я вообще не ставил задачу, я создал беседу чтобы поговорить. И мне в данный момент не важно, когда и кто будет создавать язык, рассуждения (отчасти противоречивые) о котором я здесь высказываю. Поэтому теме называется "Беседа", а не "ТЗ", и создана она в разделе "Разное". А то, о чем Вы мне предлагаете заняться - это сейчас будет пустой тратой времени, поскольку для этого требуется иметь целостное и чёткое представление желаемого продукта, а оного нет даже у меня.

Цитата:
Когда валят в одну кучу несколько понятий получается сложная система.

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

Цитата:
Следовательно для решения задачи автора имеем необходимость выявления таких часто используемых подзадач, поиска их готовых вариантов, складирования найденного в некоем общем месте, прикручивания к найденному способа ненапрягающего использования собранного богатства.

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

Цитата:
Но за рамками поля зрения остаётся одна "маленькая" проблема - кто возьмёт на себя роль того самого разработчика, который "хорошо изучит неоднозначности других языков" ?

Я сомневаюсь, что автор темы сможет в обозримое время "хорошо изучить неоднозначности других языков". Ведь мало того, что его отвлекают как повседневная работа, так и другие проблемы, но ведь всё человечество пока как-то не сподобилось "хорошо изучить неоднозначности других языков" и изложить оные внятным языком для всеобщего обозрения.

Как я уже высказался, это не имеет значения. Надо значит надо. Начинать решение задачи с обзора препятствий - заведомо пораженческая тактика.

pavia писал(а):
Для создания Си++ надо несколько десятков человеко лет. Компиляторы в одиночку не пишутся. И столько же надо для создания библиотек.
Такие вещи делаются коллективами и длиною 5-7 лет.

Да, согласен, только я бы увеличил срок лет на 10 хотя бы. А вообще, подобные вещи разрабатываются постоянно, без перерыва : )


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 дек 2014, 14:48 

Зарегистрирован: 15 апр 2014, 14:13
Сообщения: 127
Спасибо, тов. Zealint, за сносно агрессивный ответ :)
Но я со своей стороны не был нацелен на разнос в пух и прах ваших взглядов.

Zealint писал(а):
И мне в данный момент не важно, когда и кто будет создавать язык, рассуждения (отчасти противоречивые) о котором я здесь высказываю.

По сути вы заявляете о ненужности конкретно для вас предложенного для обсуждения языка. То есть прекрасно понимаете, что языка не будет и вы без него легко обойдётесь. Но перефразируя вас - наблюдается заведомо пораженческая тактика.
Zealint писал(а):
А то, о чем Вы мне предлагаете заняться - это сейчас будет пустой тратой времени, поскольку для этого требуется иметь целостное и чёткое представление желаемого продукта, а оного нет даже у меня.

То есть смысл темы изначально состоял в прояснении вашего представление о желаемом продукте. Может быть такое уточнение поможет вам в дальнейшем. Понять проблему - почти решить её.
Zealint писал(а):
Цитата:
Следовательно для решения задачи автора имеем необходимость выявления таких часто используемых подзадач, поиска их готовых вариантов, складирования найденного в некоем общем месте, прикручивания к найденному способа ненапрягающего использования собранного богатства.

Это одно из наиболее распространённых заблуждений, из-за которых многие учёные, даже более грамотные, чем я, до сих пор не могут рассчитать элементарные вещи, которые я легко рассчитал ...

Честно говоря не понял сути возражения. У вас получается занимательно излагать мысли, накопившиеся в ходе вашей работы, но почему-то не получается внятно комментировать чужие сообщения. Это для меня сюрприз. Возможно вам нужно время на осмысление. Ну и опять же - не стоит воспринимать мои рассуждалки как наезд, ведь возможно именно в таком восприятии кроется причина качества ваших ответов.

Но тем не менее - новые языки программирования есть тема очень интересная. Правда независимой от языка остаётся одна особенность людей - они часто не понимают, как в реальности работает система язык-программа-компилятор-компьютер. А когда понимают, то становятся способны без заметных проблем и весьма эффективно использовать те языки, что уже давно созданы и доступны для использования. Но в результате у них снижается заинтересованность в новых языках и новыми языками интересуются в основном начинающие программисты. Только начинающие программисты ещё не понимают систему, с которой им приходится работать. Ну а когда поймут - опять попадают в замкнутый круг, где их удерживает привычка к хорошо изученному инструменту, отказаться от которого они могут только под давлением ну очень веских аргументов.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 дек 2014, 15:19 
Аватара пользователя

Зарегистрирован: 17 фев 2013, 16:13
Сообщения: 163
эмбрион писал(а):
Спасибо, тов. Zealint, за сносно агрессивный ответ :)

Тут не агрессии : ) Вы пытались думать за меня, а я не дал Вам этого сделать. Мне кажется, Вы не поняли смысла темы, но весьма сильно распространились о том, что к ней совершенно не относится, хотя, возможно, и полезно для чего-то другого.

эмбрион писал(а):
По сути вы заявляете о ненужности конкретно для вас предложенного для обсуждения языка.

Ещё одна попытка решать за меня, что же нужно мне. Нет, я этого не заявляю.

эмбрион писал(а):
Честно говоря не понял сути возражения.

Очень просто: Вы пытаетесь навести меня на следование каким-то классическим стратегиям и готовым решениям. Это неправильно. Следовать нужно тем стратегиям, которые приводят к правильному результату. Хотя это не отрицает использования готового при необходимости.

В общем, Вы уже хотите показать, как мне следует ставить задачу, что с ней делать и как решать, в то время как есть несколько причин, по которым лучше не тратить на это время. Одна из причин совершенно ясно следует из данной беседы: мы просто обсуждаем возможные особенности неразработанного ещё языка. Если угодно, мечтаем. Вы хотите научить меня мечтать? И думаете, я не буду сопротивляться ? : )

Если тема новых языков для Вас интересна, как Вы говорите, то было бы интересно посмотреть и на Ваши идеи, если они уже могут быть оформлены в текстовом виде. Лично для меня необходимость в новом языке чем-то можно сравнить с необходимостью новой одежды для ребёнка, который вырос из старой. Более фундаментально это можно выразить как столкновение с кризисом, образовавшимся по причине того, что старые инструменты уже не решают новых возникающих задач, а новых инструментов ещё нет. Ещё более иными словами, можно сказать, что многие программисты уже стоят перед лицом IT-средневековья, и оно наступит, если те срочно не разгребут весь мусор, наплодившийся за последние 30-40 лет. Не знаю, удачно ли выразился...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 дек 2014, 15:40 

Зарегистрирован: 15 апр 2014, 14:13
Сообщения: 127
Zealint писал(а):
В общем, Вы уже хотите показать, как мне следует ставить задачу, что с ней делать и как решать, в то время как есть несколько причин, по которым лучше не тратить на это время. ... И думаете, я не буду сопротивляться ? : )

О да, сопротивление-то я и не учёл :D

Но что мешает воспринимать комментарии как просто чужое мнение ? Не предназначенное к немедленному исполнению.
Zealint писал(а):
Лично для меня необходимость в новом языке чем-то можно сравнить с необходимостью новой одежды для ребёнка, который вырос из старой. Более фундаментально это можно выразить как столкновение с кризисом, образовавшимся по причине того, что старые инструменты уже не решают новых возникающих задач, а новых инструментов ещё нет.

Поэтому давайте плясать от проблемы, а не от "по быстрому" пришедшего на ум решения. Проблема состоит в неудовлетворительном качестве имеющихся инструментов. Решением проблемы будет переход на инструменты с удовлетворительным качеством. Но является ли решением проблемы создание нового языка ? Для этого нужно понять, что такое инструмент. Выше я пытался донести, что инструмент может включать в себя некий язык, но только в качестве дополнения к некой среде и набору библиотек. И вот эта самая среда (ну и библиотеки с нею вместе) полностью выпала из вашего поля зрения. Или я не прав ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 дек 2014, 16:59 
Аватара пользователя

Зарегистрирован: 17 фев 2013, 16:13
Сообщения: 163
эмбрион писал(а):
Выше я пытался донести, что инструмент может включать в себя некий язык, но только в качестве дополнения к некой среде и набору библиотек. И вот эта самая среда (ну и библиотеки с нею вместе) полностью выпала из вашего поля зрения. Или я не прав ?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 дек 2014, 17:04 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
Zealint писал(а):
Ещё более иными словами, можно сказать, что многие программисты уже стоят перед лицом IT-средневековья, и оно наступит, если те срочно не разгребут весь мусор, наплодившийся за последние 30-40 лет.

Ого! Браво! Прям мои мысли.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 дек 2014, 17:20 
Аватара пользователя

Зарегистрирован: 17 фев 2013, 16:13
Сообщения: 163
[ 8 ] :: Отображение кода

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

Набирать текст можно по-разному. Наиболее привычным для программиста является вариант набора в одну моноширинную строку (или в две-три, когда 80 символов в строке мало). Например, формулу для чисел Фибоначчи он может набрать как-нибудь так (допустим, нет возможности и цели думать над задачей больше полутора секунд):
Код:
f[n]=1.0/pow(2.0,n)/sqrt(5)*(pow(1+sqrt(5),n)-pow(1-sqrt(5),n))

Это очень грустная для математика формула. Гораздо веселей она будет выглядеть как-нибудь так:

Изображение

Например, в Maple есть возможность вводить формулы и получать результат в подобном виде, только, к сожалению, редактор решительным образом ужасно реализован и формулы там уродские. Можно ли сделать лучше, я не знаю. Но такой вариант работы с формулами мне нравится гораздо больше.

Есть сила привычки и ограниченный набор символов, которые удобно набирать с клавиатуры, а также всего 10 пальцев, два из которых стучат по пробелу. Поэтому трудно представить редактор, который позволил бы достаточно эффективно (по времени) набирать код вроде такого:

Изображение

(разумеется, если чисто человеческие команды, как в строке 6, заменить на их эквивалент).

Лично мне больше нравится вот такая форма записи алгоритмов и форма кодирования как на картинках, а не такая, как, например, в C++, где логическое и - «&&», логическое или – «||», xor - «^», а остаток от деления – «%». Где логика? : ) Она явно осталась где-то в 80-х, поэтому лично от меня несколько ускользает.

Итак, я «за» то, чтобы кодировать можно было в более привычном для математика стиле, чтобы код программы был похож на то, что сейчас принято называть псевдокодом, а формулы были бы не однострочными, а в таком стиле, что на картинке выше. Однако очень может быть, что подобный способ кодирования окажется неэффективным. По себе могу сказать, что пишу код очень быстро, так как все символы языка C++ не требуют каких-то особых способов их ввода. А вот оператор типа «<--» (стрелка влево, или gets) вместо привычного присваивания уже может вынудить нажимать некую специальную комбинацию вместо одной кнопки «=».

С одной стороны (по моему мнению) программы, написанные в таком стиле, будут не только удобнее читать и понимать, но и проще делать их более компактными, так как богатый выбор возможностей набора формул и наличие разнообразных символов, например, utf-8, позволит сократить лексические извращения, которые появляются в результате необходимости всё набирать в одну строку. С другой стороны, это может замедлить процесс кодирования, однако тут есть и контраргумент: быстро писать в научных исследованиях требуется редко. Обычно это больше требуется на олимпиаде или при разработке ПО экстремальным методом, кроме того, рано или поздно можно будет научиться набирать подобный текст весьма быстро, если это всё-таки нужно. Когда я писал одну из своих книг, в конечном итоге научился набирать такие алгоритмы на псевдокоде в TeX довольно шустро. То есть если, скажем, разнообразные символы языка прикрепить к определённым сочетаниям клавиш, то скорость набора с опытом станет не ниже. Возьмите тот же vim, кто из профессионалов набора в нём не «ломал» поначалу пальцы? И ничего, не нарадуются этим инструментом, судя по подобным статьям.

Что же касается привычки иметь моноширинный шрифт в своём редакторе, то этот момент я также считаю пережитком той эпохи, когда по-другому было просто нельзя. Есть редкий набор случаев, когда он на самом деле нужен, но тогда никто не мешает его дополнительно подключить.

Предвижу вопрос: как такое компилировать? На самом деле ясно, что есть некий внутренний формат, невидимый для пользователя, который представляет из себя обычную последовательность символов в одну строку. Он и компилируется, а отображается лишь графическая интерпретация такого кода. Самое трудное здесь я вижу в том, чтобы редактор кода правильно понимал, что делает пользователь, так как в Maple это не всегда так и порой приводит к невидимым ошибкам, определить которые можно лишь удалив всю строку и переписав её заново.

Ожидаю бурю возражений, но спорить вряд ли буду, очень уж этот момент необычный : )


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 дек 2014, 18:32 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Zealint писал(а):
Тут есть, как Вы верно намекаете, косвенная связь. Дело в том, что определённые особенности реализации библиотек могут довольно сильно зависеть от того, какие синтаксические конструкции предоставляет язык. Привожу пример: в C++ не было «лямбд», зато были извращения с разнообразными и трудночитаемыми указателями на функции, прописать полное определение которых можно было только в несколько строк. Теперь стало проще
...
Так вот, я бы хотел, чтобы синтаксис был продуман настолько, чтобы не возникало подобных неудобств, заставляющих многие естественные для математика операции выполнять неестественным образом.

Самое важное в данном случае, это то, что вы называете "неудобствами" на самом деле является отсутствием соответствующих удобств, т.е. все эти лямбды и R-value references являются специально разработанными конструкциями и языковыми механизмами, которые привносят удобство. Соответственно, задача разработчика - придумать такие механизмы, которые облегчают работу программиста и математика. Поэтому я вижу смысл разработки языка в тщательном анализе и селекции существующих механизмов и в разработке новых.

Zealint писал(а):
Тогда желательно, чтобы компилятор умел нормально объединяться с известными ассемблерами. Это далеко не всегда обеспечено. Ещё один вариант - так называемые intrinsics функции.

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

Zealint писал(а):
Как Вы видите свою идею для реализации, например, типа данных Int72? Даже если так, всё равно доступ к флагу переноса бывает нужным сам по себе, без ADC. Конечно ADC rax, 0 может выдать нам этот флаг, но уж больно это по-инвалидски. Тем более, это вынуждает использовать константу 0, которую а ассемблере как-то редко принято использовать в таком контексте

Int72 - не вижу проблем. Умножения отбрасывают лишние разряды, сложения/вычитания добавляют перенос после операции с 64 битами к 8 битным операндам.
Тут дело вот в чём. С математической точки зрения, операция умножения всегда возвращает результат удвоенного размера. Сложение/вычитание всегда дают результат на один бит больше. То есть флаг переноса на самом деле не всегда является в полном смысле слова таким же признаком, как, например, признак нуля или знака. Это именно дополнительный значащий бит, поэтому в данной ситуации для компилятора важно это понимать. По поводу ADC RAX, 0, - конечно, выглядит это не очень красиво, но серьёзных неприятностей я в этом не вижу, тем более, что константы зачастую кодируются меньшим количеством бит, чем требует операнд. Ещё один момент заключается в том, что старший бит вряд ли часто потребуется извлекать отдельно. Чаще всего он будет использоваться именно в цепочках операций. Так что ничего неприятного/неэффективного в данной особенности я не вижу.

Zealint писал(а):
Есть жёсткие функциональные языки, однако они слабо повлияли на создание и популяризацию архитектуры ЭВМ, которая была бы чем-то похожа на такую парадигму.

Я всегда выступал с резкой критикой функциональных языков.

Zealint писал(а):
Напротив, популярные архитектуры скорее похожи на императивные языки. Эти языки развивались под действием этой архитектуры и вообще образа алгоритмического мышления в виде последовательности команд. Иными словами, раз у нас архитектура x86 или любая на неё концептуально похожая, то и язык должен быть уже императивным. Не вполне уверен, что декларативный язык (в т. ч. функциональный) будет хорошо ложиться на такую архитектуру...

Я бы сказал так:
1. Функциональщина вообще не даёт (и не может дать) никакого прироста в скорости работы программы. Ухудшить - легко.
2. Невозможно сделать аппаратную архитектуру, заточенную под ФП.
Так что об ФП в плане панацеи (или даже толчка) эффективности можно забыть.

Zealint писал(а):
Разработчику языка следует очень хорошо изучить неоднозначности других языков, поскольку порой они удивляют даже опытных программистов.

Полностью согласен.

Zealint писал(а):
pavia писал(а):
Для создания Си++ надо несколько десятков человеко лет. Компиляторы в одиночку не пишутся. И столько же надо для создания библиотек.
Такие вещи делаются коллективами и длиною 5-7 лет.

Да, согласен, только я бы увеличил срок лет на 10 хотя бы.

Компилятор с (объектно-ориентированного) языка (с автоматическим сбором мусора) COOL в архитектуру MIPS пишется одним человеком за 2-3 месяца. Проверено практикой.
Компилятор с языка С++ стандарта 2011 со всем toolchain пишется одним человеком в свободное от работы время за два года.
Собс-но, я не к тому, что это пара пустяков, но не стоит преувеличивать сложность создания рабочего компилятора даже по самым продвинутым стандартам. Основная сложность заключается в разработке оптимизации. Это - да, может отнять много человеко-лет.

Zealint писал(а):
Например, в Maple есть возможность вводить формулы и получать результат в подобном виде, только, к сожалению, редактор решительным образом ужасно реализован и формулы там уродские. Можно ли сделать лучше, я не знаю. Но такой вариант работы с формулами мне нравится гораздо больше.

Есть сила привычки и ограниченный набор символов, которые удобно набирать с клавиатуры, а также всего 10 пальцев, два из которых стучат по пробелу. Поэтому трудно представить редактор, который позволил бы достаточно эффективно (по времени) набирать код вроде такого:

Да, мне тоже сложно себе представить набор программ в таком виде. По крайней мере, про текстовые редакторы придётся забыть.

Zealint писал(а):
С одной стороны (по моему мнению) программы, написанные в таком стиле, будут не только удобнее читать и понимать, но и проще делать их более компактными, так как богатый выбор возможностей набора формул и наличие разнообразных символов, например, utf-8, позволит сократить лексические извращения

Сначала кажется, что использование UTF-8 облегчает эту задачу. Однако, если покопать, открывается куча подводных камней. ОС Windows заточена под использование кодировки Win-1251, поэтому переносимость сразу теряется. А разновидности виндовс - это подавляющий процент рынка, забить на него нельзя. Далее, символы в юникоде разные, есть, например, пробел, разные тире. Как отличать, что относится к идентификаторам? Современные стандарты С/С++ разрешают использование символов UTF-8 в именах идентификаторов, однако при этом используется куча дополнительных регламентирующих таблиц. Поскольку юникод активно развивается, эти таблицы наверняка будут меняться, а значит надо менять компилятор только из-за смены смысла какого-то символа. В результате пока что все современные компиляторы, поддерживающие юникод, на таблицы забили и я полагаю, у разработчиков при упоминании совместимости со стандартом в данной части начинается сильная мигрень.
В общем, это тот самый случай, когда за 30-40 лет накопился ком проблем, который пока не очень понятно, с какого конца раскручивать. Лично я пока что для себя решил так: национальные символы запрещены. Собс-но, это не означает, что они запрещены навсегда. Разрешить их использование потом - не проблема. А вот менять что-то в уже использующихся кодах - может превратиться в очередную головную боль и до ужаса кривые стандарты. Лучше перетерпеть лет 10 и не гнаться за прогрессом вместе с толпой, эта толпа может завести не туда.

Zealint писал(а):
Возьмите тот же vim, кто из профессионалов набора в нём не «ломал» поначалу пальцы? И ничего, не нарадуются этим инструментом, судя по подобным статьям.

Ага, пол-года бессонных тренировок... :D
Нет уж, инструмент должен быть достаточно удобен, чтобы им без проблем мог начать пользоваться новичок. VIM к этим инструментам явно не относится.

Zealint писал(а):
Предвижу вопрос: как такое компилировать? На самом деле ясно, что есть некий внутренний формат, невидимый для пользователя, который представляет из себя обычную последовательность символов в одну строку. Он и компилируется, а отображается лишь графическая интерпретация такого кода. Самое трудное здесь я вижу в том, чтобы редактор кода правильно понимал, что делает пользователь, так как в Maple это не всегда так и порой приводит к невидимым ошибкам, определить которые можно лишь удалив всю строку и переписав её заново.

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

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 дек 2014, 18:34 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Freeman писал(а):
Взаимоисключающие требования, однако.

Все эти зубодробильные конструкции со звездочками и плюсами стали возможны именно из-за полной и честной реализации императивной парадигмы.

Никоим образом. Прежде всего из-за убогости старых терминалов, в которых иногда даже фигурных или квадратных скобок не было, поэтому приходилось вешать кучу смысла на один символ и вводить такую дикость, как триграфы. А также из-за непредусмотрительности разработчиков. Связи с ассемблером здесь нет.

Freeman писал(а):
И наоборот, в практическом программировании весьма полезны функциональные приблуды, вроде чистых функций или вывода типов. Лямбды и подсчет ссылок относятся уже к более высоким уровням абстракции, и вы сами подтверждаете их удобство

Многие "функциональные приблуды" не имеют прямого отношения к идее ФП и могут быть реализованы в рамках императивного программирования (что и демонстрируют лямбды в С++).

Freeman писал(а):
Поэтому выход один -- создание нового языка. При этом, раз уж лямбды и вывод типов уже есть в C++, задача приобретает смысл "язык на замену C++", какой бы несбыточной она не казалась. Нельзя решить задачу, не поставив ее.

Вот именно, выход один - создание нового, несовместимого с С/С++ языка.

Freeman писал(а):
Нет, уважаемый SII, проблема C/C++ именно в том, что на них можно написать дикое. Именно поэтому это плохие языки. Было бы нельзя написать дикое -- были бы хорошие.

Не существует языка, на котором нельзя написать дикое. Да и вряд ли сильно ограничивающий язык будет хорошим - он будет "бить по рукам" программиста на каждом операторе, в результате даже простые действия выльются в "многабукав". Всё же нужен определённый компромисс между жёсткостью и свободой.
Основная беда С/С++ заключается не в стимулировании написания дикости (хотя да, это есть, но лишь отчасти), а в многочисленных внутренних смысловых конфликтах, которые я бы охарактеризовал как непродуманность буквально во всём. Смешение целочисленных и булевого типа (и даже смешение целочисленного типа и указателей применительно к константе "0"), изначальное отсутствие стандартизации на размеры типов, смешение в одном операторе пре- и пост-инкрементов, принадлежность последнего else одному из предыдущих if, смысловая путаница в символах операторов вплоть до того, что нельзя нормально поделить на разыменование указателя, т.к. это будет начало комментария.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 285 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 29  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB