Re: Заметка: Язык программирования
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 29.06.12 11:32
Оценка: 9 (2) +1
Статья полезная и в тему раздела "философия программирования".

Но я согласен с a_g_99 форма подачи материала всё убивает:
— неудачное форматирование,
— огромное кол-во орфографических ошибок (как на изображениях, так и в тексте),
— цель, заявленная через заголовок и первые предложения, не совпадает с текстом
— у статьи нет внятной структуры (скорее всего это следствие не совпадения заявленной цели и текста)

Сейчас, это хороший (и главное уникальный) черновой материал (это еще не статья) на тему "О связи реального, воображаемого и виртуального миров". Языки программирования в данной статье вспомогательный инструмент для раскрытия темы, какая есть связь между "реальным, воображаемым и виртуальным", и как эта связь менялась со временем. Соответственно "языки программирования" не надо выносить в заголовок, и не надо заявлять темой.

зы
Общую канву статьи я вижу следующую:
при мышлении реальность сначала кодируется образами (образное мышление), затем образы кодируются символами (появляется символьное представление, символьные преобразования, абстрактно-символьное мышление).

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

Большинство людей использует лишь образное мышление. Образное мышление достаточно полно описывает реальность, но расплывчато и неточно, а цепочку рассуждений в виде образов делать очень неэффективно. В противоположность "обычным людям" есть математики, которые мыслят и рассуждают символами. Символьное представление очень точные и позволяют эффективно выстраивать длинные выкладки рассуждений, но, к сожалению, символьное представление очень неполно описывает реальный мир.

Программист находится на перепутье. С одной стороны, он сам использует образное мышление, с другой стороны — компьютер понимает лишь символьное представление и символьное мышление. С одной стороны образы более полно описывают реальность, но неточно и непонятно для компьютера; с другой стороны — символьное представление понятнее для компьютера, но намного хуже описывает реальность.
Основная часть работы программиста связана с переводом образного мышления в символьное представление, и соответственно хороший программист обязан владеть и уметь легко переключаться между образным мышлением и символьным мышлением.

Языки программирования развиваются из двух крайностей: либо они идут от образного мышления программиста — последовательность шагов исполнения, ООП и т.д., либо они идут из математики (символьного представления) — реляционная алгебра, лямбда исчисление и т.д. С каждым годом, оба этих подхода всё теснее переплетаются: "программистские" языки программирования всё больше начинают использовать в своей работе символьные преобразования (автоматическая оптимизация кода, автоматическое переписывание запросов, yield-ы и т.д.), "математические" языки программирования учатся описывать с помощью символов всё более и более сложные представления (ленивое выполнение, типизированное лямбда исчисление, монады и т.д.).

В тоже время растет и порог входа в хорошие программисты: всё сильнее растут требования к образному мышлению программиста (умению подмечать как работает реальность), и одновременно растут требования к умению использовать символьное мышление (умению проводить сложные и длинные преобразования)
Re: Заметка: Язык программирования
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 28.06.12 14:26
Оценка: 2 (1) +1
"масленное сравнение" — это страшно
форматирование неудачное для такого большого текста: выделение отдельных мыслей бросается в глаза больше, чем разбиение на главы
Re: Заметка: Язык программирования
От: Mamut Швеция http://dmitriid.com
Дата: 28.06.12 15:13
Оценка: 2 (1) +1
AC>О связи реального, воображаемого и виртуального миров.
AC> read more>>>
AC>--------------------------------
AC>Мнения, особенно замечания и конструктивная критика, приветствуются!

Смотрел наискосок

Язык программирования(ЯП), в отличии от естественного языка, первую очердь предназначен для передачи данных от человека к компьютеру

Давно не так. Да и вообще всегда не так. ЯП — это способ задания правил обработки данных, и ничего больше. Данных от человека компьютеру всегда передается меньше, чем передается «нечеловеческих данных» компьютеру.

Одни элементы быстро покидают множество, например OLE. Другие остаются популярными долгое время, например оператор присваивания, ООП и т.п.


Идея и процесс описаны правильно, примеры выбраны неправильно. OLE не относится к языкам программирования, а к технологиям.


А так в целом неплохо и многое описано, имхо, верно


dmitriid.comGitHubLinkedIn
Заметка: Язык программирования
От: AlexCab LinkedIn
Дата: 28.06.12 13:59
Оценка: +1 :)
Тысячи языков, сотни платформ, десятки парадигм, зачем? почему?
Каждый, кто сталкивался с миром программирования наверняка задавался этими вопросами, так было и со мной.
В этой заметке я вкратце напишу о том как появились и развивались языки программирования, о том, как появляются программы.
О связи реального, воображаемого и виртуального миров.
read more>>>
--------------------------------
Мнения, особенно замечания и конструктивная критика, приветствуются!
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[3]: Заметка: Язык программирования
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 30.06.12 16:30
Оценка: 64 (1)
AC>__Кроме образов отражающих реальность есть абстрактные образы. [..] Абстрактный образ содержит только часть свойств(тоже образы) абстрагируемого.

Данное деление условное и неформальное.
Все образы — абстрактные, и все образы содержат только часть свойств реального объекта.
Например, возьмем образ "черный чайник, который стоит на моей кухне" — это образ конкретного реального объекта, и этот образ является обобщением. Реальный чайник каждую секунду чуточку другой: у него меняется температура, идет коррозия контактов, разрушается конструкция, меняется кол-во воды в нем, меняется его расположение в пространстве — но мы абстрагируемся от всех этих изменений, и кодируем чайник одним образом.
Еще заметнее — это на динамических объектах (в том числе, живых существ): Петька, с которым вместе гоняли мяч в детстве, уже давно вырос, в нем поменялся уже каждый атом, но для нас это всё один и тот же образ. Что для кодирования прошлого Петьку, что для сегодняшнего.
Соответственно, правильнее утверждать, что каждый образ является обобщением. И соответственно, для каждого образа необходимо указывать — каким способом идет обобщение, и какие детали считаются несущественными в рамках данного образа.

AC> "абстрактно-символьное" не корректно, так как символы эквивалентны обозначаемым образам, а не абстрагируют их.


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

Символьное мышление появляется как раз в случаях, когда такая эквивалентность пропадает.

Рассмотрим следующую задачу:

Бак имеет форму прямоугольного параллелепипеда. К нему подведены три трубы: одна сверху, одна снизу, одна – в центре боковой грани. В трубу сверху вода вливается, а через две остальные выливается. Если открыть только нижнюю трубу, то полный бак становится пустым за 8 часов. Если открыть и нижнюю, и боковую трубы, то полный бак опустошается за 7 часов. Если же в пустом баке открыть все три трубы, то он наполняется за 5 часов 24 минуты. За какое время заполнится пустой бак, если открыть только верхнюю трубу?

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

Если открыть только нижнюю трубу, то полный бак становится пустым за 8 часов
1 / z = 8
Если открыть и нижнюю, и боковую трубы, то полный бак опустошается за 7 часов
1/2(y+z) + 1/2z = 7
Если же в пустом баке открыть все три трубы, то он наполняется за 5 часов 24 минуты
1/2(x — (z + y)) + 1/2(x-z) = 5 + 24/60
При этом ясно, что для того, чтобы в последнем случае бак наполнялся, необходимо чтобы через верхнюю трубу воды вливалось больше, чем через нижнюю и боковую за тоже время выливалось
x > z + y

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

В данном случае нет эквивалентности, можно говорить лишь об аналогичности (сохранении топологии двух структур). О том что структура работы труб аналогична структуре уравнений, и если мы сделаем какие-то выводы для уравнений, то они будут верны и для труб.
И здесь как раз проявляется мощность символьного мышления, после того как задача корректно переведена на символьный уровень, можно не задумываться о том, что же обозначает каждая операция, а можно действовать механистически по правилам: делай раз, делай два, получили ответ, проверили его на адекватность, и Ура! — задача решена.

DG>>Человеку тяжело дается символьное мышление, для него более естественный вид мышления — образное. Для компьютера естественный вид мышления — символьное.

AC>Человек, существо очень адаптивное, как научился так и мыслит, но обычно/в основном люди мыслят словами(возможно потому что это более эффективно и/или возможно учатся этому с самого детства), которые в некоторой степени эквиваленты символам.

Человек думает образами, слова лишь используется для вызова нужных образов. У человека память ассоциативная, и слова используются как ключи для доступа к нужным образам, но после того как образ вызван, рассуждение уже идет в виде цепочки образов.
Например, периодически люди говорят "ой! слово вылетело; ой, забыл как называется". При этом человек может описать свойства, может строить рассуждения, и т.д. у него лишь временно "пропала" обратная ссылка для преобразования образа в кодирующего его слово.
Или можно взять знакомые объекты: соседей по дому; рядом стоящие здания и улицы и т.д. Мы можем строить достаточно сложные рассуждения о том, кто где находится, у кого какие привычки; как пройти по улицам между зданий в заданную точку — но при этом у нас нет отдельных слов для обозначения каждого полузнакомого нам человека, или для каждого здания и улицы которое мы видели, знаем и помним.
То, что человек думает образами, а не словами — демонстрирует также полиграф (детектор лжи). Даже если человеку начать просто показывать слова — он начнет волноваться, радоваться, печалится, потеть, ерзать, будет меняться дыхание, пульс и т.д., потому что каждое слово будет вызывать определенный образ, причем значительная часть образов настолько "большая", что они затрагивают даже эмоциональный и физиологический центры мозга.

DG>>Большинство людей использует лишь образное мышление. Образное мышление достаточно полно описывает реальность, но расплывчато и неточно, а цепочку рассуждений в виде образов делать очень неэффективно. В противоположность "обычным людям" есть математики, которые мыслят и рассуждают символами. Символьное представление очень точные и позволяют эффективно выстраивать длинные выкладки рассуждений, но, к сожалению, символьное представление очень неполно описывает реальный мир.


AC>Образы сейчас переносятся в компьютер при помощи слов(синтаксиса ЯП) почти "как есть", так как средства/инструменты программирования "доросли" до этого(особенная заслуга в этом — ООП).


От того, что мы в программе написали class Чайник{} образ чайника в компьютере не появился.
Образ в первую очередь, это большое кол-во взаимосвязей. Если же взаимосвязи в компьютер не перенесены, то это лишь еще один ничего не значащий символ, а не образ.
Для человека образ Чайник — это большое кол-во разнообразных связей:
— на кухне стоит черный пластиковый на 2 литра,
— чайник используется для подготовки кипятка для приготовления чай; или используется для заваривания
— в детстве у бабушки на кухне был кругленький керамический заварочный чайник;
— из чайника можно разливать воду в чашки
— у приятеля видел классный стеклянный чайник. и почему он не лопается?
— чайник бывает для приготовления воды на плите; бывает электрический причем в двух видах: подставка отдельно или шнур втыкается прямо в чайник
— чайник — это посуда. Хотя — нет, заварочный чайник или чайник, который греется на плите — это посуда; а электрический чайник — это уже техника;
— помню как-то взял неудачно чайник, и он на меня опрокинулся; было очень больно;
— чайник может расплавиться, если в нем не будет воды; хотя говорят что современные чайники должны выключаться;
— чайник есть материальный объект, имеющий вес, прочность, размеры, форму и т.д.
— О! я еще анекдот знаю про чайник..
— для того, чтобы из чайника вылить воду лучше использовать носик, для этого надо чайник наклонить;
— чайником также называют недалекого человека.
— а в студенческие годы, чайник как-то куда-то продевали, поэтому приходилось воду для чая готовить в кастрюле
— чайник обычно состоит из сосуда, ручки, носика и крышки
— в чайник можно воду налить, и она от туда не выльется, потому что чайник специально сделан, чтобы вода оттуда не выливалась;
— если чайник сильно наклонить при наливании, то у него может отвалиться крышка
и т.д.

Вот это всё лишь малая часть того образа, который возникает в голове у каждого человека — когда появляется слово "чайник", и именно такое большое кол-во взаимосвязей, и позволяет корректно среагировать на фразу "сделай мне, пожалуйста, чая".
Re: Заметка: Язык программирования
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 12.07.12 18:44
Оценка: 64 (1)
советую прочитать Турчина "Феномен науки". там отчасти затрагивается устройство мышления

4.7. Язык
До сих пор мы рассматривали человека как индивидуума и интересовались возможностями его мозга. При таком подходе вовсе не очевидно, что появление на Земле человека — это такая уж революция в истории жизни. Лягушка умнее медузы. Собака умнее лягушки. Обезьяна умнее собаки. Теперь появилось существо, которое умнее обезьяны. Ну и что?

Революцию создало появление человеческого общества, обладающего определенной культурой и, в первую очередь, языком. Ключевым моментом является здесь язык.

Под языком вообще понимают определенный способ сопоставления объектам Ri, которые рассматриваются как некая первичная реальность, объектов Li, называемых именами объектов Ri, и рассматриваемых как нечто вторичное, специально созданное для сопоставления объектам Ri,. По отношение к имени Li объект Ri, называют его значением. Совокупность всех объектов Li часто также называют языком (в более развернутой форме ее следовало бы назвать материальным фиксатором или носителем языка). Множество объектов Li, может быть гораздо обширнее и разнообразнее множества языков Li. Так, например, обстоит дело в случае естественных языков: русского, английского и т. п. Ясно, что при замене восприятия реальных объектов и ситуаций на их словесное описание теряется огромное количество информации. В тех случаях, когда информативность объектов Ri и Li одного порядка величины, вместо слова язык часто употребляют кибернетический термин код. Переход от R к L называют кодированием, а обратный переход от L к R — декодированием. Так, при передаче по радио сообщения с помощью «морзянки», исходный текст — набор букв кодируется набором точек и тире. В этом коде (языке) информация совершает путешествие в эфире и принимается в заданной точке. Затем происходит декодирование с языка точек и тире на язык букв. Процесс кодирования и декодирования в данном случае не приводит к потере информации.

Так как для перехода от значения к имени и обратно нет более удобных общепринятых терминов, чем кодирование и декодирование, мы будем употреблять эти термины в самом общем смысле, не заботясь о соотношении информативностей (и называя язык не «кодом», а именно «языком»).

Объекты Ri и Li могут быть произвольной природы, это не обязательно предметы, а, вообще говоря, явления, звуковые колебания. Заметим, что «явление» — это самый общий термин, которым мы можем обозначить какую-то часть физической реальности, ограниченную в пространстве и времени, «предмет» — более расплывчатое понятие, которое относят к явлениям специального типа, обнаруживающим определенную стабильность: наличие поверхности, через которую отсутствует обмен веществом. Так как в действительности абсолютно непроницаемых границ не существует, и все так называемые предметы непрерывно меняются, это понятие относительно; оно отражает лишь малую скорость изменений.

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


мы говорили о разнице между образным мышлением и символьным мышлением, у Турчина тоже самое называется неформальным мышлением и формальным мышлением, и проводится такое же различие между ними.

12.1. Формализованный язык
[..]
Понятие о формализованном языке можно определить следующим образом.

Обратимся к нашей схеме использования языковых моделей действительности (см. рис. 9.5) и поставим вопрос: каким образом выполняется преобразование L1 → L2, от какой информации оно зависит? Можно представить себе две возможности.

Преобразование L1 → L2 определяется исключительно языковыми объектами Li, которые в нем участвуют, и не зависят от тех языковых представлений Si, которые им соответствуют по семантике языка. Иначе говоря, языковая деятельность зависит только от «формы» языковых объектов, но не от их «содержания» (значения).
Результат преобразования языкового объекта Li зависит не только (и не столько) от вида самого объекта Li, но и от представления Si, которое он порождает в голове человека, от ассоциаций, в которые он входит, а, следовательно, от личного жизненного опыта человека.
В первом случае мы называем язык формализованным, во втором неформализованным.

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

Данное нами определение формализованного языка относится к случаю, когда язык используется для создания моделей действительности. Когда язык служит средством передачи управляющей информации (язык приказов), имеет место совершенно аналогичное деление на два возможных типа реакции.

Человек реагирует на приказ строго формально, т. е. его действия зависят только от той информации, которая содержится в тексте приказа, рассматриваемом как изолированная материальная система.
Действие человека зависит от тех представлений и ассоциаций, которые вызывает у него приказ. Таким образом, он использует фактически гораздо большую информацию, чем та, которая содержится в тексте приказа.
Принципиальной разницы между языком приказов и языком моделей нет. Приказ «прячься!» можно трактовать как модель «если ты не спрячешься, то рискуешь потерять жизнь». Различие между приказом и моделью — в деталях использования информации. В обоих случаях формализованность языка приводит к определенному отделению синтаксиса от семантики, к отрыву материальных языковых объектов от связанных с ними представлений, к приобретению языковыми объектами качеств независимой системы.

В зависимости от того, какого типа язык используется, можно говорить о неформальном и формальном мышлении.

[..]

Re: Заметка: Язык программирования
От: batu Украина  
Дата: 29.06.12 10:27
Оценка: 2 (1)
Здравствуйте, AlexCab, Вы писали:

AC>Тысячи языков, сотни платформ, десятки парадигм, зачем? почему?

AC>Каждый, кто сталкивался с миром программирования наверняка задавался этими вопросами, так было и со мной.

AC>--------------------------------

AC>Мнения, особенно замечания и конструктивная критика, приветствуются!
Как точка зрения автора, вполне читаемо. Есть спорные моменты, но спорить не хорчется. Много грамматических ошибок.
Re[5]: Заметка: Язык программирования
От: a_g_99 США http://www.hooli.xyz/
Дата: 02.07.12 09:34
Оценка: 2 (1)
Здравствуйте, AlexCab, Вы писали:

AC>Читателям стоит оценить успешность/корректность этой попытки и, что ещё лучше, опубликовать своё мнение.

Я не буду вам отписывать — слишком долго писать почему бессмыслица бессмысленна. Но хочу указать вам на пример действительно интересной, хорошо структурированной и умной статьи в этой области.
http://www.defmacro.org/ramblings/fp.html
Возможно это будет в будущем полезно и "бумага не будет так бездарно измарана".
Удачи в литераторстве!
Re: Заметка: Язык программирования
От: maxkar  
Дата: 05.07.12 15:29
Оценка: 2 (1)
Здравствуйте, AlexCab, Вы писали:

AC>Мнения, особенно замечания и конструктивная критика, приветствуются!


Пройдусь по некоторым фактическим ошибкам.

Суть математического представления в том чтобы "оцифровать" свойства реального объекта, т.е. представить их в виде численного отношения к некоторому эталону, ...

Нет. Не в виде эталона, а в виде какой-то "стандартной" модели. Стандартной в том смысле, что она одинаково понимается другими математиками. Та же "классическая" геометрия в превую очередь работает со свойствами объектов, а не с числами (с числами работает аналитическая геометрия).

В контексте "ООП..."

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

Нет, здесь как раз большая проблема. ООП не позволяет удобно переносить объекты мысленного представления в машинное. Как раз строится математическое представление мира. В мысленном "объект" существует отдельно, отношения между ним и другими объектами — отдельно. Так, конкретный чайник принадлежит к классам "чайники", "зеленые объекты". В зависимости от его текущего состояния (именно состояния!) он может принадлежать или не принаджелать классу "объект, с помощью которого можно удалить жажду". Из за всего этого сложно моделировать в ООП объекты мысленного представления. При правильном моделировании у чайника останутся только свойства и никакого поведения. А поведение (ассоциации и т.п.) переедут в модель наблюдателя а не объекта. Это на самом деле правильно, позволяет делать "похожих" наблюдателей (как раз полиморфизм из-за различных отношений), но связь с ООП там видна далеко не сразу.

а при использовании более высокоуровневого ЯП об этих условностях можно забыть и считать что программный объект это (почти) точное отражение мысленного.

А какой из языков позволяет переносить объекты отдельно от отношений между объектами? Без возможности переносить объекты и отношения отельно, приблизить языки к мысленной форме будет сложно. Ну а вторая задача — учет контекста объекта. Вы про нее не упомянули, но за одним символом в зависимости от контекста могут скрываться "разные" объекты. Вручную устранять такую неоднозначность — кошмар. Автоматически — возможны сложные трудноуловимые баги.

Большинство людей мыслят словами, это более экономично/эффективно по сравнению с мышлением образами.

А ссылки можно? Утверждение слишком категорично, а я не уверен в его правдивости. Мышление словами более "привычно", но это вырабатывается в процессе обучения. Но его проблема в том, что оно "линейно". Образное мышление нелинейно и может давать "быстрое" нахождение результата. Остается еще вопрос с точностью найденного решения, но оно может быть уточнено уже "словесным" путем.

так как образное представление позволяет передавать и обрабатывать(обдумывать) гораздо больше информации за тоже время, по сравнению с текстом.

Да, вот собственно оно и есть. Противоречие с предыдущим пунктом.

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

Это да. Но с другой стороны, такой подход может скрывать слишком много деталей и его использование для ряда задач будет невозможным. Здесь нужен баланс между "специализированностью" и "широтой".
Re: Заметка: Язык программирования
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 20.07.12 08:22
Оценка: 2 (1)
Здравствуйте, AlexCab, Вы писали:

AC>Тысячи языков, сотни платформ, десятки парадигм, зачем? почему?

AC>Каждый, кто сталкивался с миром программирования наверняка задавался этими вопросами, так было и со мной.
AC>В этой заметке я вкратце напишу о том как появились и развивались языки программирования, о том, как появляются программы.
AC>О связи реального, воображаемого и виртуального миров.
AC> read more>>>
AC>--------------------------------
AC>Мнения, особенно замечания и конструктивная критика, приветствуются!

Материал конечно хлипковат, среди языков только древние да маргинальные и вдобавок нет ни строчки про Немерле.

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

Ну и вообще,про развитие есть, а про назначение ничего нет, а то тут местные функционалисты исповедуют религию "программирование превыше всего".
Re: Заметка: Язык программирования
От: maxkar  
Дата: 05.07.12 14:18
Оценка: 1 (1)
Здравствуйте, AlexCab, Вы писали:

AC>Мнения, особенно замечания и конструктивная критика, приветствуются!

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

Правильная история открытий и изобретений в нашем контексте следующая:
1. Изобретение абстракции числа (не 5 конкретных булок, а просто "5"). В IT именно на этом уровне работали первые вычислители (сумматоры, счетные машины).
2. Изобретение "абстрактной записи". Это на самом деле огромное достижение, без которого математика развивалась бы гораздо медленнее. До этого в математических трактатах так и было по всему тексту (пользуясь веткой из обсуждения) "единица деленная на объем воды, вытекающей из трубы бассейна". Замена "объема воды..." на z (ну и + математические символы) позволила сократить математические тексты и сделать их более сконцентрированными на задаче. В IT это появление "ассемблеров высокого уровня" — C и т.п., которые абстрагируются от "конкретики" и позволяют "кратко" записать какие-то вещи.
3. Развитие "алгебры" как отдельной области математики. В данном случае я под "алгеброй" имею в виду любые символьные вычисления и преобразования. Вроде a + b + e = a + c + e => b = c. Для применения подобных преобразований нужно накладывать определенные ограничения на сами элементы и операции. Преобразование выше накладывает определенные ограничения на оператор "+". Попытки использовать обобщенные алгоритмы (работающие в обобщенных терминах) в IT, потребовали механизмов описания тех самых ограничений. Сейчас таким механизмом являются системы типов. Отношение is-a как раз и задает возможность использовать обобщенные алгоритмы. Отсюда и OOP (в первую очередь — обобщенные алгоритмы) с его отношением наследования.

Вот примерно на этом этапе сейчас и находится IT. Пока нет языков, которые в выразительной можности приближаются к классической "алгебре". И причина простая — наличие "двух" языков/алгебр. Один — для общей системы выполнения. Второй — системы типов. Пока они будут отличаться, не получится использовать многие алгебраические разработки. Например, группа над целыми числами может быть определена двумя способами (по сложению и по умножению). И я хочу выражать в коде как общий тип "Group<S, Op>". И вот при этом мне не хватает выразительных способностей для описания Group<Int, +> и Group<Int, *> на уровне типа. Т.е. нужно уметь параметризовывать типы любыми значениями языка. В том числе — функциями. Здесь еще много проблем, но тема интересная. Хочу язык с first-class types.

А дальше может быть что-нибудь еще более интересное. В математике, например, был изобретен предельный переход, что дало возомжность для создания еще нескольких областей математики.
Re: Заметка: Язык программирования
От: a_g_99 США http://www.hooli.xyz/
Дата: 29.06.12 05:35
Оценка: -1
Здравствуйте, AlexCab, Вы писали:

AC>Тысячи языков, сотни платформ, десятки парадигм, зачем? почему?

AC>Каждый, кто сталкивался с миром программирования наверняка задавался этими вопросами, так было и со мной.
AC>В этой заметке я вкратце напишу о том как появились и развивались языки программирования, о том, как появляются программы.
AC>О связи реального, воображаемого и виртуального миров.
AC> read more&gt;&gt;&gt;
AC>--------------------------------
AC>Мнения, особенно замечания и конструктивная критика, приветствуются!

Просмотрел (зачем ? кто вернет потраченные минуты ?). Если коротко — дерьмо. Подробнее:
Термины — зачем писать что вода мокрая, а солнце светит? или ваш опус для папуасов?
История — она у вас какая-то альтернативная. К реальной жизни отношения не имеет
Представление мира — это просто бред какой-то . Демонстрируете как работает чайник ? Похвально
Мышление, математика, программирование — это опять про чайник. Продакт плейсмент или что это?
Программист — ну вот вы добрались до описания программиста. И поняли что цитирую "Программы пишут люди, и называются они "программисты"". Остальной текст для чего?
Модель языка и формализация некоторых понятий — здесь было вполне интересное начало, но кончили как говорят русские люди заупокой. Нормальных выводов нет
Жизненный цикл языка — весьма забавно. Оказывается жаба консервативный язык, я плюсы чистый модерн. У вас какое-то непонятное академическое воззрение

Собственно после всего этого возникло 2 вопроса:
1 — зачем все это написано?
2 — почему вы это написали?
йник
Re[4]: Заметка: Язык программирования
От: AlexCab LinkedIn
Дата: 01.07.12 16:04
Оценка: +1
Здравствуйте, DarkGray, Вы писали:
AC>>__Кроме образов отражающих реальность есть абстрактные образы. [..] Абстрактный образ содержит только часть свойств(тоже образы) абстрагируемого.
DG>Данное деление условное и неформальное.
DG>Все образы — абстрактные, и все образы содержат только часть свойств реального объекта.
В общем то да, я использую это деление только в рамках мысленных объектов(образов).
Примерно так я себе это представляю:

Это маленький кусочек дерева абстракции, который в свою очередь кусочек субъективной карты мира.
На рисунке:
Одиночные объекты:
Формальные(конкретные) объекты:
1)Физический объект.
2)Конкретный(формальный) мысленный объект(отражение физического) "Чёрный электрочайник фирмы "Чайник",с ручкой с боку, цилиндрической формы, на столе".
Абстрактный мысленные объекты:
3)"Некоторый чайник фирмы "Чайник", с ручкой с боку, цилиндрической формы"
4)"Некоторый чайник фирмы "Чайник", с ручкой с верху, округлой формы"
5)"Некоторый чайник, с ручкой с боку, цилиндрической формы"
6)"Некоторый чайник, с ручкой с верху, округлой формы"
7)"Нечто цилиндрической формы"
8)"Некое устройство для нагревания воды"
9)"Какой-то объект"
Классы объектов:
A)"Чайники фирмы "Чайник""
B)"Чайники"

AC>> "абстрактно-символьное" не корректно, так как символы эквивалентны обозначаемым образам, а не абстрагируют их.

DG>Если есть эквивалентность между символами и образами, это до сих пор образное мышление. Символ в данном случае будет выполнять роль более абстрактного образа, но это все равно будет образ.
"Более абстрактный" это образ (возможно производный от абстрагируемого) содержащий меньшее свойств, по сравнению с абстрагируемым образом. Эквивалентный образу образ, может вообще не иметь ничего общего с первым, кроме связи эквивалентности.
Вот так мне представляются связи мысленных объектов:

Эквивалентность — когда один мысленный объект эквивалентен другому, например, в рассуждениях может быть использован любой из эквивалентных объектов.
Абстракция — когда экстрагирующий объект содержит только часть свойств абстрагируемого, например, когда в рассуждениях отбрасывается не существенные детали.
Обобщающая абстракция — когда абсорбирующий объект содержит свойства общие для некоторого класса объектов, например, используется в рассуждениях когда не важно какой именно объект из класса.
Аналогичность — когда ключевые(в некотором контексте) свойства объектов совпадают.

DG>Символьное мышление появляется как раз в случаях, когда такая эквивалентность пропадает.

Почему она должна пропадать?

DG>Рассмотрим следующую задачу:

DG>...
DG>и когда в этой системе уравнений мы делаем подстановку первого уравнения во все следующие, мы просто делаем символьные преобразования, которые выучили до этого.
При символьных преобразованиях, связь символов с эквивалентными образами не теряется, и эти образы не становятся более абстрактными.
DG>Мы при этом совсем не думаем о том, что ага z — это производительность нижней трубы, поэтому давайте ее подставим во второе уравнение. Мы думаешь о z — лишь как о символе, что z — это одна из переменных, от которой можно избавиться, подставив первое уравнение во все следующие.
Не знаю как вы, я думаю о z как о переменной(образ из математической модели).
Вот примерно так:

1)Отражение физического объекта "труба с расходомером измеряющим поток некоторой величина".
2)Абстракция "через трубу протекает поток некоторой величины".
3)Абстракция "некоторая величина"(переменная).
4)Эквивалентность "некоторая величина" это "Z", "Z" это "некоторая величина".
5)Эквивалентность "Z" это "1/8", "1/8" это "Z"
Пример абстракции в математике, считать некоторые переменные константами(временно присвоить некоторое значения), или отбросить не существенные, в некотором контексте, переменные/значения.

DG>В данном случае нет эквивалентности, можно говорить лишь об аналогичности (сохранении топологии двух структур). О том что структура работы труб аналогична структуре уравнений,

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

DG>И здесь как раз проявляется мощность символьного мышления, после того как задача корректно переведена на символьный уровень, можно не задумываться о том, что же обозначает каждая операция, а можно действовать механистически по правилам: делай раз, делай два, получили ответ, проверили его на адекватность, и Ура! — задача решена.

Нет, тут проявляется мощность абстрактного мышления, потому что если бы мы не использовали абстракцию, даже на такой простой системе получилось бы очень-очень много символов. В тоже время мы могли бы и не использовать мат. символы для записи, а например записать тоже словами "1 / z = 8" == "один делить на некоторый поток равно восемь часов".

AC>>Человек, существо очень адаптивное, как научился так и мыслит, но обычно/в основном люди мыслят словами(возможно потому что это более эффективно и/или возможно учатся этому с самого детства), которые в некоторой степени эквиваленты символам.

DG>Человек думает образами, слова лишь используется для вызова нужных образов. У человека память ассоциативная, и слова используются как ключи для доступа к нужным образам, но после того как образ вызван, рассуждение уже идет в виде цепочки образов.
Я(и вероятно многие другие) думаю цепочками слов, я могу "обратится" и к образу(например графической его части), но обычно этого не требуется. Как конкретно это работает(или как могло бы работать), я пока не знаю.
DG>Например, периодически люди говорят "ой! слово вылетело; ой, забыл как называется". При этом человек может описать свойства, может строить рассуждения, и т.д. у него лишь временно "пропала" обратная ссылка для преобразования образа в кодирующего его слово.
Обычно в таких случаях "вылетевшее" слово заменяется чем-то вроде "эта/та штука".
DG>Или можно взять знакомые объекты: соседей по дому; рядом стоящие здания и улицы и т.д. Мы можем строить достаточно сложные рассуждения о том, кто где находится, у кого какие привычки; как пройти по улицам между зданий в заданную точку — но при этом у нас нет отдельных слов для обозначения каждого полузнакомого нам человека, или для каждого здания и улицы которое мы видели, знаем и помним.
Для этого используются абстрактные образы, например "сосед", "здания на этой улице", которые также имеют(связаны с) названия.
DG>То, что человек думает образами, а не словами — демонстрирует также полиграф (детектор лжи). Даже если человеку начать просто показывать слова — он начнет волноваться, радоваться, печалится, потеть, ерзать, будет меняться дыхание, пульс и т.д., потому что каждое слово будет вызывать определенный образ, причем значительная часть образов настолько "большая", что они затрагивают даже эмоциональный и физиологический центры мозга.
Несомненно при мышлении словами выполняется "обращение" к образам, однако рассуждение продолжается в виде слов.

AC>>Образы сейчас переносятся в компьютер при помощи слов(синтаксиса ЯП) почти "как есть", так как средства/инструменты программирования "доросли" до этого(особенная заслуга в этом — ООП).

DG>От того, что мы в программе написали class Чайник{} образ чайника в компьютере не появился.
Да, придётся долго описывать чайник, "объяснять компьютеру", но зато потом можно будет всего линь написать "чайник = new Чайник()" и он появится.
DG>Образ в первую очередь, это большое кол-во взаимосвязей. Если же взаимосвязи в компьютер не перенесены, то это лишь еще один ничего не значащий символ, а не образ.
Да, это так.
DG>Для человека образ Чайник — это большое кол-во разнообразных связей:
DG>...
DDG>Вот это всё лишь малая часть того образа, который возникает в голове у каждого человека — когда появляется слово "чайник", и именно такое большое кол-во взаимосвязей, и позволяет корректно среагировать на фразу "сделай мне, пожалуйста, чая".
Да, мысленных объектов в карте, и их связей очень-очень много. Но "возникают" только те которые подходят под текущий контекст, когда в слышите "сделай мне, пожалуйста, чая" вы же не вспоминаете о "в детстве у бабушки на кухне был кругленький керамический заварочный чайник"(ну может быть только в случае если до этого вы говорили о бабушке, детстве или керамических заварных чайниках).
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[3]: Заметка: Язык программирования
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 13.07.12 14:22
Оценка: +1
AC>В общем согласен с определением "формализованый язык", но ИМХО оно крайне неудачно, я бы сказал: ФЯ это язык каждый объект L котрого точно соответствует объекту S(семантике), который в свою очередь точно(на сколько это возможно) соответствует объекту R(из Ri)

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

AC>Т.к. в формализованном языка множества Li, Si и Ri точно соответствуют друг другу, можно использовать только элементы множества Li, не обращаясь к Si.


на практике используется чуть другое требование:
т.к. Li передает Ri с точностью достаточной для решения задачи, то можно использовать Li не обращаясь к Ri.
Например, если необходимо посчитать кол-во мест, то человека можно считать за 1, не разбираясь большой он, или маленький, взрослый или ребенок. Если же необходимо будет посчитать сколько требуется кислорода в секунду на группу людей, то придется переходить к каким-то более точным числам, которые уже будут учитывать вес, возвраст, физиологическое и психологическое состояние и т.д.

AC>

AC>В обоих случаях формализованность языка приводит к определенному отделению синтаксиса от семантики, к отрыву материальных языковых объектов от связанных с ними представлений, к приобретению языковыми объектами качеств независимой системы.

AC>Вот тут он ИМХО не прав, формализация языка гвоздями прибивает синтаксис к семантике, что собственно и позволяет безопасно отбросить семантику((!) не абстрагироваться от семантики, а именно отбросить).

если это утверждение верное, то почему это не видно на примере .net-а?
где семантика задана .net-ом, а синтаксис можно брать произвольный: C#, VB.Net, F#, IL и т.д.

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

имхо, как раз наоборот, чем сильнее формализация — тем сильнее семантика отделяется от синтаксиса, из-за того, что как раз уменьшается роль непроговоренной информации, которую и пыталась хоть как-то передавать жесткая связка синтаксиса и семантики.
Re: Заметка: Язык программирования
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 28.06.12 14:27
Оценка:
матиматическое описание
Re: Заметка: Язык программирования
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 28.06.12 14:38
Оценка:
в общем, я смотрел только картинки, и почти на каждом изображении есть орфографические ошибки, что некритично, но раздражает.
Re[2]: Заметка: Язык программирования
От: AlexCab LinkedIn
Дата: 29.06.12 09:12
Оценка:
Здравствуйте, a_g_99, Вы писали:
AC>>Мнения, особенно замечания и конструктивная критика, приветствуются!
__>2 — почему вы это написали?
Хотел подытожить имеющиеся на сегодня знания в этой области,
__>1 — зачем все это написано?
а также узнать мнения других людей, с "незамутнённым" взглядом.
К тому же возможно эта заметка будет полезна другим лэнгмейкерам.

__>Просмотрел (зачем ? кто вернет потраченные минуты ?). Если коротко — дерьмо. Подробнее:

На самим деле это такой хитрый план:
1.Написать заметку.
2.Пока все будут заняты её чтением, я выиграю немного времени.
3.???
4.PROFIT!!11
__>Термины — зачем писать что вода мокрая, а солнце светит? или ваш опус для папуасов?
В этой главе всего лишь уточнение используемых терминов.
__>История — она у вас какая-то альтернативная. К реальной жизни отношения не имеет
Возможно. ПредлОжите лучший вариант?
__>Представление мира — это просто бред какой-то . Демонстрируете как работает чайник ? Похвально
__>Мышление, математика, программирование — это опять про чайник. Продакт плейсмент или что это?
Когда я обдумывал на чём привести пример, чайник первым попал на глаза
__>Программист — ну вот вы добрались до описания программиста. И поняли что цитирую "Программы пишут люди, и называются они "программисты"". Остальной текст для чего?
Остальное — моя версия ответа на вопрос "как они это делают?".
__>Модель языка и формализация некоторых понятий — здесь было вполне интересное начало, но кончили как говорят русские люди заупокой. Нормальных выводов нет
В этой и прочих главах, я старался описать общие понятия и явления, чтобы вы могли, используя эту информацию, сделать конкретные выводя для вашего конкретного случая.
__>Жизненный цикл языка — весьма забавно. Оказывается жаба консервативный язык, я плюсы чистый модерн. У вас какое-то непонятное академическое воззрение
Для Java программистов была создана Scala, которая "теперь вы можете использовать ФП на платформе JVM".
Для C++ программистов был создан D, который "то-же что С++, но без мусора".
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[3]: Заметка: Язык программирования
От: a_g_99 США http://www.hooli.xyz/
Дата: 29.06.12 10:07
Оценка:
Здравствуйте, AlexCab, Вы писали:

AC>Хотел подытожить имеющиеся на сегодня знания в этой области,

Вы не могли прояснить в какой области? В области программирования? Эта статья итог ваших знаний в области программирования?

AC>На самим деле это такой хитрый план:

AC>1.Написать заметку.
AC>2.Пока все будут заняты её чтением, я выиграю немного времени.
AC>3.???
AC>4.PROFIT!!11
Ну если так вы меня сделали. Я потел, читал, а вы наверное в это время банк грабили? Надеюсь охранники тоже увлеченно читали и обсуждали фразу "Программы пишут люди, и называются они "программисты""?

AC>В этой главе всего лишь уточнение используемых терминов.

Хочу пожать вам руку. Теперь все люди на планете знают значение слов объект, элемент, модель, точка зрения в вашем интерпретации. Да вам словарь Ожегова надо дополнять

AC>Возможно. ПредлОжите лучший вариант?

История — это прежде всего факты. Поэтому если вы решились взяться за такое неблагодарное дело, то нужно прежде всего опираться на факты. Вместо это вы философствуете о пользе математики, фараонах и даете совершенно однобокую концепцию деления ЯП.
Лучший вариант — смотреть развитие ЯП по фактическим датам, как это делают в обычных учебниках, если вас так тянет к истории

AC>Когда я обдумывал на чём привести пример, чайник первым попал на глаза

Ну хотя бы чайник не в обиде. Вам тогда и статью надо было назвать — Представление мира на основе чайника!

AC>Остальное — моя версия ответа на вопрос "как они это делают?".

Сначала работают головой, потом немножко руками . А вы там опять про чайник на 5 страниц разошлись

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

Тогда лучше почитать спецификации. Зачем ваша статья?

AC>Для Java программистов была создана Scala, которая "теперь вы можете использовать ФП на платформе JVM".

AC>Для C++ программистов был создан D, который "то-же что С++, но без мусора".
Ну и что вы хотите этим сказать? Что скала и ди заменят джаву и плюсы? Да нет, не заменят — это обусловлено их предметной областью

Вообще ваша статья сильно напоминает статьи которые сейчас пишут некоторые современные роботизированные системы — куча плохо состыкованных слов и без идеи и выводов. Отсюда и был вопрос — в чем ее смысл? Что вы хотели высказать? Что нужно будет оценить читателю?
Re[2]: Заметка: Язык программирования
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.06.12 21:43
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>Но я согласен с a_g_99 форма подачи материала всё убивает:

DG>- неудачное форматирование,
DG>- огромное кол-во орфографических ошибок (как на изображениях, так и в тексте),
DG>- цель, заявленная через заголовок и первые предложения, не совпадает с текстом
DG>- у статьи нет внятной структуры (скорее всего это следствие не совпадения заявленной цели и текста)

Дык. И еще опубликовано фиг знает где. Надо исправить этот фатальный недостаток.

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

Автор согласен?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Заметка: Язык программирования
От: AlexCab LinkedIn
Дата: 30.06.12 11:34
Оценка:
Здравствуйте, DarkGray, Вы писали:
DG>- огромное кол-во орфографических ошибок (как на изображениях, так и в тексте),
Разумеется исправлю, как только доберусь до рабочей машины.
DG>- цель, заявленная через заголовок и первые предложения, не совпадает с текстом
DG>- у статьи нет внятной структуры (скорее всего это следствие не совпадения заявленной цели и текста)
DG>Сейчас, это хороший (и главное уникальный) черновой материал (это еще не статья) на тему "О связи реального, воображаемого и виртуального миров". Языки программирования в данной статье вспомогательный инструмент для раскрытия темы, какая есть связь между "реальным, воображаемым и виртуальным", и как эта связь менялась со временем. Соответственно "языки программирования" не надо выносить в заголовок, и не надо заявлять темой.
Не совсем так, эта _заметка_ попытка разобрать частный случай "Язык программирования" с помощью модели(эта модель — модель мышления "как думают люди") описанной в главе "Представление мира"(эта модель разрабатываться для другого проекта, пока ещё очень-очень сырая(ещё рано о ней подробно писать), но уже позволяет объяснять некоторые простые вещи(например из главы "Модель языка и формализация некоторых понятий")).

DG>зы

Всё сложнее:
__Образы — отражение(не кодирующее, а скорей описывающее) объекта реального мира в памяти человека, в первую очередь графическое(то что мы видим глазами), но не обязательно(например звуковые, тактильные, придуманные и прочие образы). Образы связаны между собой, образуют "субъективную карту мира".
__Образы могут быть связаны с идентифицирующими(кодирующими) их названиями(также образами, потому я использую более общее "мысленные объекты"), фактически представляющими отражение последовательности звуков. Названия, а точнее звуки из которых они состоят, в свою очередь, связана с последовательностью символов(букв),(использование в процессе мышления(обдумывания, например) "названий" есть "мышление словами").
__Образы могут быть связаны с идентифицирующими их символами(также образами), которые уже в свою очередь могут иметь названия, а могут и не иметь.
__Кроме образов отражающих реальность есть абстрактные образы. Характеристика "абстрактный" может применяться только к образам связанным с другими. Абстрактный образ содержит только часть свойств(тоже образы) абстрагируемого. Абстрактный образ может содержать общие свойства для некоторого класса абстрагируемых(обобщающий абстрактный образ). Например образ "присваивание" содержит алгоритм "тому что с лева от равно, присвоить значение того что с права", этот образ абстрагирует более сложный "взять из ячейки памяти ###, поместить в регистр...". Или к примеру "ТУ154" образ конкретной модели самолёта, а "самолёт" образ обобщающий класс летающих машин. Это определение применимо только для образов из карты, например программист может и не знать что оператор присваивая работает как-то иначе, т.е. алгоритм "тому что с лева от равно..." будет для него вполне формальным.
__Формальный образ — образ соответствующий одному конкретному объекту реального мира и в достаточной степени точно его отражающий.
__Образное мышление — под этим термином обычно подразумевается мышление без слов и символов(графическое, "звуковое"(как у композитора) например), но исходя из определений выше это любое мышление(потому "образом" я называю отражение реального объекта исключая его названия и прочие обозначения).
__Абстрактное(нечёткое) мышление, это когда в процессе мышления используются абстрактные образы. Например "нагревать кружку до 45*С" — формальное мышление, "нагревать ёмкость пока не станет тёплой" — абстрактное.
__Разделение на разные мышления довольно условно, реально, в одном контексте(в одной "мысли"), могут используются все виды в произвольных комбинациях.
DG>при мышлении реальность сначала кодируется образами (образное мышление), затем образы кодируются символами (появляется символьное представление, символьные преобразования, абстрактно-символьное мышление).
Реальность "кодируется" образами, но мышление может быть и не образным. Могут кодироваться, если есть соответствующий символ, например у "оператор присваивания"
есть, о "ООП" нету. "абстрактно-символьное" не корректно, так как символы эквивалентны обозначаемым образам, а не абстрагируют их.
DG>Абстрактно-символьное мышление намного мощнее и эффективнее образного мышление. Символьные преобразования изучает математика.
Абстрактное мышление эффективнее формального. Я не слишком прокачан в математике, но по моему она изучает числам и их отношения, которые уже в свою очередь могут быть записаны символами. В заметке математика рассматривается с точки зрения "предшественницы/истока программирования".
DG>Человеку тяжело дается символьное мышление, для него более естественный вид мышления — образное. Для компьютера естественный вид мышления — символьное.
Человек, существо очень адаптивное, как научился так и мыслит, но обычно/в основном люди мыслят словами(возможно потому что это более эффективно и/или возможно учатся этому с самого детства), которые в некоторой степени эквиваленты символам. А для компьютера, имхо, "естественно" числовое "мышление", и уже по верх него люди "напридумывали" абстракций для "совместимости".
DG>Большинство людей использует лишь образное мышление. Образное мышление достаточно полно описывает реальность, но расплывчато и неточно, а цепочку рассуждений в виде образов делать очень неэффективно. В противоположность "обычным людям" есть математики, которые мыслят и рассуждают символами. Символьное представление очень точные и позволяют эффективно выстраивать длинные выкладки рассуждений, но, к сожалению, символьное представление очень неполно описывает реальный мир.
Большинство людей, в том числе и математики, использует в мышлении огромное количество абстрактных образов, которые "расплывчаты и неточны". Математики, вероятно, больше мыслят "числовыми" образами(числами) и их отношениями. Прикладные математики связывают числа и отношения с образами отражающими конкретные объекты, использование мат. методов позволяет им добиться большей точности. Теоретики не связывают числа с конкретными образами, работают с собственно числами, применяя к ним имеющиеся и создавая новые мат. методы. Отличие математиков от "обычных людей" в том сто они владеют мат. методами(которые также образы), и используют их(вместе с не мат. методами) в процессе мышления. Формальное "представление" очень точно(в отличии от абстрактного), но очень объёмно, в не зависимости от того как они выражается, символами, словами или как-то ещё. А рассуждения могут состоять из каких угодно образов, а их длинна думаю ограничивается размером памяти рассуждающего. Абстрактные образы, как более "лёгкие", позволяют строить более длинные рассуждения.
DG>Программист находится на перепутье. С одной стороны, он сам использует образное мышление, с другой стороны — компьютер понимает лишь символьное представление и символьное мышление. С одной стороны образы более полно описывают реальность, но неточно и непонятно для компьютера; с другой стороны — символьное представление понятнее для компьютера, но намного хуже описывает реальность.
Образы сейчас переносятся в компьютер при помощи слов(синтаксиса ЯП) почти "как есть", так как средства/инструменты программирования "доросли" до этого(особенная заслуга в этом — ООП). В давние времена когда компьютеры "понимали", только числа, программистам приходилось предварительно преобразовывать переносимые образы в "числовые" образы. А компьютер можно "научить" "понимать" что угодно, не только символы, однако символьный ввод получил наибольшее распространение как наиболее удобный. Проблема "описания реальности" не в символьном представлении, а в том что компьютеры слишком "глупы" по сравнению с людьми, и "объясняя" им реальность приходится "разжёвывать".
DG>Основная часть работы программиста связана с переводом образного мышления в символьное представление, и соответственно хороший программист обязан владеть и уметь легко переключаться между образным мышлением и символьным мышлением.
Точнее я бы сказал, переводом и "человеческого" в "компьютерное" представление. А хороший программист, это тот который умеет хороши конструировать "компьютерное" представление.
DG>Языки программирования развиваются из двух крайностей: либо они идут от образного мышления программиста — последовательность шагов исполнения, ООП и т.д., либо они идут из математики (символьного представления) — реляционная алгебра, лямбда исчисление и т.д. С каждым годом, оба этих подхода всё теснее переплетаются: "программистские" языки программирования всё больше начинают использовать в своей работе символьные преобразования (автоматическая оптимизация кода, автоматическое переписывание запросов, yield-ы и т.д.), "математические" языки программирования учатся описывать с помощью символов всё более и более сложные представления (ленивое выполнение, типизированное лямбда исчисление, монады и т.д.).
Задача решается либо "в лоб", например при помощи ООП, либо как в давние времена, строим мат. подель -> программируем мат. модель, либо(обычно) и то и то. Соответственно есть ЯП более ориентированные на первый способ, есть на второй, есть(большинство) на оба. Или иначе говоря ЯП ориентированные на "прикладное" мышление, ЯП ориентированные на "математическое" мышление и что чаще, на оба.
DG>В тоже время растет и порог входа в хорошие программисты: всё сильнее растут требования к образному мышлению программиста (умению подмечать как работает реальность), и одновременно растут требования к умению использовать символьное мышление (умению проводить сложные и длинные преобразования)
Порог наоборот падает, за счёт развития инструментов и приёмов программирования, если лет тридцать назад, программирование было уделом бородатых нердов, то сегодня доступно даже детям. А хороший программист, это программист который лучше относительно других программистов в своей области(в разных областях разный порог вхождения), то есть с порогом вхождения это не связано.

Вот как-то примерно так.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[3]: Заметка: Язык программирования
От: AlexCab LinkedIn
Дата: 30.06.12 11:37
Оценка:
Здравствуйте, VladD2, Вы писали:
VD>Автор согласен?
Было-бы хорошо. К вторнику~среде постараюсь подготовить *.doc.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[4]: Заметка: Язык программирования
От: AlexCab LinkedIn
Дата: 30.06.12 11:55
Оценка:
Здравствуйте, a_g_99, Вы писали:
AC>>Хотел подытожить имеющиеся на сегодня знания в этой области,
__>Вы не могли прояснить в какой области? В области программирования? Эта статья итог ваших знаний в области программирования?
Языков программирования, их разработки и использования людьми.
AC>>Возможно. ПредлОжите лучший вариант?
__>История — это прежде всего факты. Поэтому если вы решились взяться за такое неблагодарное дело, то нужно прежде всего опираться на факты. Вместо это вы философствуете о пользе математики, фараонах и даете совершенно однобокую концепцию деления ЯП.
Да, это всего лишь деление по методу использования ЯП. Как бы вы их разделили?
__>Лучший вариант — смотреть развитие ЯП по фактическим датам, как это делают в обычных учебниках, если вас так тянет к истории
Исторические факты говорят "что произошло", но не "почему произошло", "почему произошло именно так а не иначе" etc. А в той главе я постарался кратко ответить на вопрос "как так получилось что мы имеет то что имеем".
AC>>Когда я обдумывал на чём привести пример, чайник первым попал на глаза
__>Ну хотя бы чайник не в обиде. Вам тогда и статью надо было назвать — Представление мира на основе чайника!
Чайник — маленькая частичка большого мира
AC>>Остальное — моя версия ответа на вопрос "как они это делают?".
__>Сначала работают головой, потом немножко руками . А вы там опять про чайник на 5 страниц разошлись
Вот-вот именно об этом глава, но детальней и с примерами.
AC>>В этой и прочих главах, я старался описать общие понятия и явления, чтобы вы могли, используя эту информацию, сделать конкретные выводя для вашего конкретного случая.
__>Тогда лучше почитать спецификации. Зачем ваша статья?
Спецификации? Каждому своё.
AC>>Для Java программистов была создана Scala, которая "теперь вы можете использовать ФП на платформе JVM".
AC>>Для C++ программистов был создан D, который "то-же что С++, но без мусора".
__>Ну и что вы хотите этим сказать? Что скала и ди заменят джаву и плюсы? Да нет, не заменят — это обусловлено их предметной областью
Что разработчики Scala считают что в Java не хватает ФП(судя по тому что Scala получил некоторое распространение, не они одни), которое только сейчас начинают потихоньку добавлять(Scala'е уже ~10 лет). Т.е. Java довольна консервативна(как минимум по отношению к ФП).
Разработчики D считают(так как выставляют это одним из основных достоинств) что C++ слишком оброс мусором(почему так случилось можете прочитать у Страуструпа в его "Дизайн и эволюция C++"). Т.е. С++ довольно динамично развивается(по сравнению с Java).
__>Вообще ваша статья сильно напоминает статьи которые сейчас пишут некоторые современные роботизированные системы — куча плохо состыкованных слов и без идеи и выводов.
Я и сам в печали, не умею я красиво складывать слог.
__>Отсюда и был вопрос — в чем ее смысл? Что вы хотели высказать? Что нужно будет оценить читателю?
Это попытка описать явление "Язык программирования".
Читателям стоит оценить успешность/корректность этой попытки и, что ещё лучше, опубликовать своё мнение.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[5]: Заметка: Язык программирования
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 02.07.12 08:32
Оценка:
DG>>Символьное мышление появляется как раз в случаях, когда такая эквивалентность пропадает.
AC>Почему она должна пропадать?

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

Например, к реальному чайнику(или к его хорошему мысленному образу) можно применить множество операций и получить при этом адекватный ответ.
Например,
почти(Чайник, готовит кофе, а не чай) = кофейник
почти(Чайник, форма похоже, но цель другая: поливка) = лейка
кол-во товаров, выставленных на продажу в магазине Zzz по адресу Xxx, соответветствующих данному виду(Чайник) = 15
и т.д.

если же взять символ в виде class CЧайник{}, то применение этих же операций выдаст другой ответ:
почти(CЧайник, готовит кофе, а не чай) = неизвестно или ошибка "данная операция неприменима к данному символу" (зависит от языка, на котором вводился данный символ)
почти(CЧайник, форма похоже, но цель другая: поливка) = неизвестно или ошибка "данная операция неприменима к данному символу"
кол-во товаров, выставленных на продажу в магазине Zzz по адресу Xxx, соответветствующих данному виду(CЧайник) = неизвестно или ошибка "данная операция неприменима к данному символу"

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

Соответственно, ни о какой эквивалентности между реальным объектом "чайник" и символом CЧайник говорить нельзя. Можно лишь говорить о том, что CЧайник является проекций реального объекта "чайник" на некоторое субпространтство.

AC>Не знаю как вы, я думаю о z как о переменной(образ из математической модели).


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

AC>Вот примерно так:

[..]
AC>4)Эквивалентность "некоторая величина" это "Z", "Z" это "некоторая величина".
AC>5)Эквивалентность "Z" это "1/8", "1/8" это "Z"

контрольные вопросы:
при решений данной системы уравнений имеем ли мы право возвести какое-либое из уравнений в квадрат (возвести в квадрат и левую и правую часть уравнения)?
если ответ для данной системы уравнений был получен с использованием операции возведения в квадрат уравнений, то является ли такой способ решения корректным?
есть ли (и какой) в данном случае физический смысл у операции возведения уравнения в квадрат?

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

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


DG>>и если мы сделаем какие-то выводы для уравнений, то они будут верны и для труб.

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

согласен

DG>>И здесь как раз проявляется мощность символьного мышления, после того как задача корректно переведена на символьный уровень, можно не задумываться о том, что же обозначает каждая операция, а можно действовать механистически по правилам: делай раз, делай два, получили ответ, проверили его на адекватность, и Ура! — задача решена.

AC>Нет, тут проявляется мощность абстрактного мышления, потому что если бы мы не использовали абстракцию, даже на такой простой системе получилось бы очень-очень много символов. В тоже время мы могли бы и не использовать мат. символы для записи, а например записать тоже словами "1 / z = 8" == "один делить на некоторый поток равно восемь часов".

словами запись уже не очень корректная, если у числа 8 появилась размерность, то она должна была появиться у 1 и у потока.

AC>Несомненно при мышлении словами выполняется "обращение" к образам, однако рассуждение продолжается в виде слов.


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

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


Пока мы не решим задачу до конца, неизвестно какая часть образа понадобится, а какая нет.
Например, если мы привыкли делать чай из пакетиков, а находимся в гостях и у них чай непакетированный, то придется вспоминать как процесс приготовления чай выглядел у бабушки и какие инструменты для этого использовались, и здесь как раз появится "кругленький керамический заварочный чайник".

Из-за того, что мы постоянно применяем поспешные решения и заранее обедняем программу: в данной программе не понадобится информация о том, что "в детстве у бабушки на кухне был кругленький керамический заварочный чайник", и происходит закономерные последствия: 99.999% программ могут решать задачи только при полном совпадении входных условий, как только условия хоть чуть-чуть поменялись, программа становится полностью неприменима.
Re[6]: Заметка: Язык программирования
От: AlexCab LinkedIn
Дата: 03.07.12 07:38
Оценка:
Здравствуйте, DarkGray, Вы писали:
AC>>Почему она должна пропадать?
DG>Эквивалентность подразумевает, что заодно сохраняется эквивалентность операций.
DG>При этом символ всегда поддерживает намного меньше операций, чем соответствующий ему образ или реальный объект, что как раз и приводит к потере эквивалентности между образом и символом.
Вероятно "эквивалентность" неудачное название, возможно стоит поменять, например на "соответствие", я ещё подумаю над этим. В общем что я имею виду, вы, имхо, присваиваете понятию "символ" большой смысл чем просто "графическое обозначение", как буква например или символ "=". Я считаю символ отдельным м. объектом(образом, в вашей терм.), со своими свойствами(в том числе и операциями). Символ, как и слово(синтаксис), просто обозначает некоторый другой м. объект(семантика).
Например, здесь:

3) это "переменная", то есть м. объект хранящий свойства(описывающий) объекта "переменная"(в том числе возможные операции, например присваивание значения/выражения), 4) это м. объект символа "Z", хранящий свойства этого символа, например графическое изображение, звук произношения, алгоритм написания etc. Когда вы конструировали контекст, то решили "я назову эту переменную Z", т.е. создали связь между м. объектом "переменная" и м. объектом символа "Z". Далее "обращаясь" к м. объекту "Z", вы "получаете доступ" так-же и к свойствам м. объекта "переменная", и наоборот.

DG>Например, к реальному чайнику(или к его хорошему мысленному образу) можно применить множество операций и получить при этом адекватный ответ.

DG>...
DG>В каком-то конкретном случае именно эти операции могут быть закодированы, но при этом не будут закодированы какие-то другие операции. Главное, что в любом случае, над символом будет закодировано всегда меньше операций, чем над образом, ему соответствующим.
Не спорю возможности современного ООП, лишь очень-очень бледное отражение возможностей человека по работе с объектами, тем не менее там есть иерархии типов, приведение типов(вверх/вниз), свойства etc.

DG>Соответственно, ни о какой эквивалентности между реальным объектом "чайник" и символом CЧайник говорить нельзя.

Разумеется нет, как и об эквивалентности многоих других реальных объектов, их мысленным образам. Я мел ввиду что "чайник = new Чайник()" приведёт к появлению программного объекта, который "отражение реального объекта", настолько точного насколько точно его описал программист.
DG>Можно лишь говорить о том, что CЧайник является проекций реального объекта "чайник" на некоторое субпространтство.
Можно и так сказать, я говорю "CЧайник" это "программный объект" — отражение реального объекта в памяти компьютера.

DG>это как раз подтверждает, что эквивалентность пропала.

DG>Сначала был образ трубы, а теперь появился образ переменной,
Эквивалентность пропала на предыдущем шаге(между 2) и 3), на рисунке), на операции абстракции.
DG>который с образом трубы ничего общего не имеет.
Почему не имеет? В текущем контексте переменная осталась связана с трубой(связью абстракции).

AC>>Вот примерно так:

DG>контрольные вопросы:
DG>при решений данной системы уравнений имеем ли мы право возвести какое-либое из уравнений в квадрат (возвести в квадрат и левую и правую часть уравнения)?
Разумеется да, как и использовать любые другие мат. методы, но чтобы мат. модель не потеряла соответствия(с абстрактной/образной моделью), все подобные измения нужно "откатить", например если вы домножали уравение на какоето число, то после преобразования уравнения, необходимо его разделить на тоже число.
DG>...
DG>соответственно, и в данном случае ни о какой эквивалентности говорить не приходится. Уравнение в символах возводить в квадрат можно, а реальные трубы возводить в квадрат нельзя.
Уравнение, в этом случае, тоже нельзя "возвести в квадрат и так и оставить", так как это не просто какое то уравнение "само по себе", это уравнение отражает абстрактную модель, которая в свою очередь есть отражение реальных труб.

AC>>Нет, тут проявляется мощность абстрактного мышления, потому что если бы мы не использовали абстракцию, даже на такой простой системе получилось бы очень-очень много символов. В тоже время мы могли бы и не использовать мат. символы для записи, а например записать тоже словами "1 / z = 8" == "один делить на некоторый поток равно восемь часов".

DG>словами запись уже не очень корректная, если у числа 8 появилась размерность, то она должна была появиться у 1 и у потока.
Просто пример, ещё например запись абстрактного(в смысле "само по себе"/"отвлечённого") уравнения: "1 / z = 8" == "один делить на z(переменную) равно восемь".

AC>>Несомненно при мышлении словами выполняется "обращение" к образам, однако рассуждение продолжается в виде слов.

DG>Вот этот тезис мне не очень понятен.
DG>Если на каждом шаге рассуждения происходит сопоставление слов с образами, при этом есть шаги когда есть только образы, но нет соответствующим им слов, то откуда появляется утверждение, что рассуждения продолжаются в виде слов?
Не сознательное обращение к образам, как то так:
Контекст(мысль): Карта:
"вчера"_______->_образ "вчера"
"я"___________->_образ "я"
"видел"_______->_образ "видел"
"фото"________->_образ "фото"
<изображение>_<-_образ "фото"
"соседа"______->_образ "сосед"

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

DG>Пока мы не решим задачу до конца, неизвестно какая часть образа понадобится, а какая нет.
DG>Например, если мы привыкли делать чай из пакетиков, а находимся в гостях и у них чай непакетированный, то придется вспоминать как процесс приготовления чай выглядел у бабушки и какие инструменты для этого использовались, и здесь как раз появится "кругленький керамический заварочный чайник".
И я о том же, какая часть образа вспомнится зависит от текущего контекста.

DG>Из-за того, что мы постоянно применяем поспешные решения и заранее обедняем программу: в данной программе не понадобится информация о том, что "в детстве у бабушки на кухне был кругленький керамический заварочный чайник", и происходит закономерные последствия: 99.999% программ могут решать задачи только при полном совпадении входных условий, как только условия хоть чуть-чуть поменялись, программа становится полностью неприменима.

Не очень понял эту фразу, но программы разные бывают, в том числе и адаптивные(у меня на работе есть подобные устройства). Конечно рамки возможностей адаптации таких программ гораздо-гораздо уже чем у людей и даже животных.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[7]: Заметка: Язык программирования
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 03.07.12 20:35
Оценка:
AC>В общем что я имею виду, вы, имхо, присваиваете понятию "символ" большой смысл чем просто "графическое обозначение", как буква например или символ "=". Я считаю символ отдельным м. объектом(образом, в вашей терм.), со своими свойствами(в том числе и операциями). Символ, как и слово(синтаксис), просто обозначает некоторый другой м. объект(семантика).

между символом и образом я провожу следующую важную границу:
— символ — задает четкое множество (есть строгий критерий, который фиксирует чем является символ, и какое множество объектов он задает),
образ — задает нечеткое множество (отсутствует строгий критерий)

CЧайник определяет строгое множество объектов, которые являются CЧайник-ом.
Образ Чайник не имеет такого строгого критерия.

AC>Например, здесь:

AC>

Если на этом изображение первое слово "эквивалентность" заменить на словосочетание "переформулирование через четкие множества, для того, чтобы можно было применить математику", то я согласен.
Re[8]: Заметка: Язык программирования
От: AlexCab LinkedIn
Дата: 04.07.12 12:45
Оценка:
Здравствуйте, DarkGray, Вы писали:
AC>>В общем что я имею виду, вы, имхо, присваиваете понятию "символ" большой смысл чем просто "графическое обозначение", как буква например или символ "=". Я считаю символ отдельным м. объектом(образом, в вашей терм.), со своими свойствами(в том числе и операциями). Символ, как и слово(синтаксис), просто обозначает некоторый другой м. объект(семантика).
DG>между символом и образом я провожу следующую важную границу:
DG>- символ — задает четкое множество (есть строгий критерий, который фиксирует чем является символ, и какое множество объектов он задаёт),
В общем то да, плюс этот критерий(связь) для некоторых символов(в особенности математических) может меняться от контекста к контексту.

DG>образ — задает нечеткое множество (отсутствует строгий критерий)

Если "нечёткое множество" это то, в которое объект входит/невходи с некоторой вероятностью, то не совсем согласен.
Если рассматривать образ как абстрактное(общее/среднестатистическое для многих людей) понятие, то это так. Но если расматирывать его как конкретный образ конкретного человека(в контексте модели мышления), то он задаёт вполне четкое множество.

DG>CЧайник определяет строгое множество объектов, которые являются CЧайник-ом.

ООП класс(идентифицируемый символом "CЧайник") используется только для конструирования объектов, определяет сторогое множество объектов которые могут быть сконструированы с его помощью.
Сам класс "CЧайник" конструируется программистом, методом композиции(задания) свойств:
"CЧайник"(класс) => "метод "нагревать воду" + свойство "некоторый цвет" + метод "взять в руки" + ..."

DG>Образ Чайник не имеет такого строгого критерия.

Вполне имеет:
Абстрактный образ "Чайник"(идентифицируемый символом "чайник"), также может использоваться для конструирования объектов(дизайнерами чайников, например), в этом случае он также определяет строгое множество объектов(если дизайнер чайников выйдет за рамки образа(его собственного представления "что такое чайник") то это уже не будет чайник(с другой стороны дизайнер может сконструировать НЕХ и назвать это "чайник", но это уже будет случай неоднозначности, когда значение слова зависит от контекста)).
Ещё образ используется для распознавания, в этом случае он тагже определяет строгое множество обектов, состоящее из трёх подмножеств "это чайник"(свойства совпадают) "это не чайник"(свойства не совпадают) "возможно это (не) чайник"(свойства частично совпадают). К какому из подмножеств будет отнесён конкретный объект зависит от состояния образа "Чайник", конкретного человека в конкретный момент времени.

Образы динамичны, т.е. изменяются со временем(при обдумывании).
Пример создания образа "Чайник"(конструируется методом обобщения свойств):
1.Увидели объект с набором свойств ""нагревает воду" + "чёрный" + "можно взять в руки" + ..." => узнали что он называется "Чайник"
2.Увидели объект с набором свойств ""нагревает воду" + "белый" + "можно взять в руки" + ..." => узнали что он тоже называется "Чайник"/распознали по ключевым свойствам(для распознавания по ключевым свойствам нужно уже иметь некоторый, достаточный опыт, чтобы собственно их выделить) => обобщили(цвет не важен) ""нагревает воду" + "какой-то цвет" + "можно взять в руки" + ..."
3....
Так образ становится всё более абстрактным, до тех пор пока абстрактное представление(аб. образ "Чайник"), не начинает покрывать все формальные объекты(все виды и типы чайников) с которыми встресался человек.

DG>Если на этом изображение первое слово "эквивалентность" заменить на словосочетание "переформулирование через четкие множества, для того, чтобы можно было применить математику", то я согласен.

Как вы себе это представляете?
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[9]: Заметка: Язык программирования
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 05.07.12 05:03
Оценка:
AC>Если рассматривать образ как абстрактное(общее/среднестатистическое для многих людей) понятие, то это так. Но если расматирывать его как конкретный образ конкретного человека(в контексте модели мышления), то он задаёт вполне четкое множество.

напиши, пожалуйста, список достаточных и необходимых условий для твоего образа Чайник

AC>Образы динамичны, т.е. изменяются со временем(при обдумывании).


это отчасти подтверждает мой тезис, что образы нечеткие.
Меняются в зависимости от контекста, меняются от точки рассмотрения и т.д.


DG>>Если на этом изображение первое слово "эквивалентность" заменить на словосочетание "переформулирование через четкие множества, для того, чтобы можно было применить математику", то я согласен.

AC>Как вы себе это представляете?

"это" — что в данном случае подразумевает?
Re[10]: Заметка: Язык программирования
От: AlexCab LinkedIn
Дата: 05.07.12 07:46
Оценка:
Здравствуйте, DarkGray, Вы писали:
AC>>Если рассматривать образ как абстрактное(общее/среднестатистическое для многих людей) понятие, то это так. Но если расматирывать его как конкретный образ конкретного человека(в контексте модели мышления), то он задаёт вполне четкое множество.
DG>напиши, пожалуйста, список достаточных и необходимых условий для твоего образа Чайник
Ключевые свойства: 1-есть некоторая ёмкость для воды, 2-есть некоторый "встроеный" источник тепла подогревающий воду, 3-алгоритм использования "набрать воды -> нагреть до кипения"
Любой не изветный объект, встретившийся мне и имеющий эти свойства будет класифицирован как некоторая разновидность чайника.
Думаю люди не встречавшиеся с промышлеными "устройство для преготовления кипячёной воды" и именуемыми в народе также чайниками, дополнитетьно учитывали бы характерную форму(ручка, носик etc.) и габариты.

AC>>Образы динамичны, т.е. изменяются со временем(при обдумывании).

DG>это отчасти подтверждает мой тезис, что образы нечеткие.
Конечно, если рассматривать в отрыве от текущего контекста.
Например в контексте отношения к человеку "чайник" == "старающийся новичок", "чайник" в контексте соционики это (внезапно, теперь хоть буду знать чем занимаюсь ) "эталонный объект для иллюстрации аспектов".

DG>>>Если на этом изображение первое слово "эквивалентность" заменить на словосочетание "переформулирование через четкие множества, для того, чтобы можно было применить математику", то я согласен.

AC>>Как вы себе это представляете?
DG>"это" — что в данном случае подразумевает?
Процесс переформулирования.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[11]: Заметка: Язык программирования
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 06.07.12 07:43
Оценка:
DG>>напиши, пожалуйста, список достаточных и необходимых условий для твоего образа Чайник
AC>Ключевые свойства: 1-есть некоторая ёмкость для воды, 2-есть некоторый "встроеный" источник тепла подогревающий воду, 3-алгоритм использования "набрать воды -> нагреть до кипения"
AC>Любой не изветный объект, встретившийся мне и имеющий эти свойства будет класифицирован как некоторая разновидность чайника.

Электрический самовар по этим критериям является чайником. Для тебя это так?
Обычный металлический чайник для кипячения воды на плите по этим критериям чайником не является. Для тебя это так?

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

DG>>>>Если на этом изображение первое слово "эквивалентность" заменить на словосочетание "переформулирование через четкие множества, для того, чтобы можно было применить математику", то я согласен.

AC>>>Как вы себе это представляете?
DG>>"это" — что в данном случае подразумевает?
AC>Процесс переформулирования.

Обычно через введение множества допущений, часто эти допущения вводятся неявно.
Пример.
Образное описание: крупным клиентам даем автоматически скидку на 10%
В данном случае есть нечеткий образ "крупный". Если такое распоряжение выдать куче разных продавцов, то каждый продавец будет это распоряжение отрабатывать по разному — по своему воспринимая что такое крупный, и в какой момент применяется скидка.
Символьное описание:
При переводе на символы образ "крупный" заменяется на символ "статус крупный":
клиент имеет статус крупного, если он купил на 5 млн. руб;
изменение статуса клиента происходит 10 января на основании оплаченных счетов за предыдущий календарный год,
если на момент выставлении счета клиент имеет статус крупного, то он автоматически получает скидку 10%.
Re[12]: Заметка: Язык программирования
От: AlexCab LinkedIn
Дата: 06.07.12 16:00
Оценка:
Здравствуйте, DarkGray, Вы писали:
AC>>Ключевые свойства: 1-есть некоторая ёмкость для воды, 2-есть некоторый "встроеный" источник тепла подогревающий воду, 3-алгоритм использования "набрать воды -> нагреть до кипения"
AC>>Любой не изветный объект, встретившийся мне и имеющий эти свойства будет класифицирован как некоторая разновидность чайника.
DG>Электрический самовар по этим критериям является чайником. Для тебя это так?
Да, вариант чайника, если бы не знал правельного называется, гарантировано называл бы чайником.
Тем не мение, самовар это самовар, они имеет собственное дерево абстракции, с листьями из всех конкретных самоваров что я помню, и корнем собствено абстрактным образом "самовар". И отличается от чайника(в общеринятом значении) характерной конструкцией. Самовар находится на одном уровне с чайником, т.е. оба они относятся к классу "устройства для кипячения воды"(те из подобных устройств, что имеют длинное название, я для краткости так и называю, чайниками). ИМХО.
DG>Обычный металлический чайник для кипячения воды на плите по этим критериям чайником не является. Для тебя это так?
Такие чайники имеют дно специальной конструкции(широкое), котрое в рамках образа "чайник" можно считать его источником тепла. Чайник без этого(например заварник), я бы класифицировал как вариант кувшина.

DG>Нечеткость образов проявляется в том, что у человека даже после серьезного обдумывания не получается выписать все необходимые и достаточные условия.

Это не значит что их нету. И к тому же процесс серьёзного обдумывания наверняка изменит обдумываемый образ.
К примеру, ты решил "всё, с сегдняшненго дня чаник это: 1...2...3... и не как иначе", т.е. определил строгие критерии, и как следствие строгое множетво объектов подходящих под эти критерии. Но однажды тебе встретился чайник который не подпадает под всего один из этих критериев, у тебя есть выбор либо считать это не чайником либо изменить критерии. Допустим ты выбрал второе, и изменил критерии таким образом чтобы они покрывали и этот вариант чайника. Ведь это не слелало критерии не чёткими(по крайней мере до следующего изменения). По моему скромному мнению, нечто подобное происходит в мышлении людей, но выполняется это автоматически(скрытно, само сабой), а люди пользуются только готовым результатом("готовыми" абстрактными образами).

DG>>>>>Если на этом изображение первое слово "эквивалентность" заменить на словосочетание "переформулирование через четкие множества, для того, чтобы можно было применить математику", то я согласен.

AC>>>>Как вы себе это представляете?
DG>>>"это" — что в данном случае подразумевает?
AC>>Процесс переформулирования.
DG>Обычно через введение множества допущений, часто эти допущения вводятся неявно.
DG>Пример.
DG>Образное описание: крупным клиентам даем автоматически скидку на 10%
DG>В данном случае есть нечеткий образ "крупный". Если такое распоряжение выдать куче разных продавцов, то каждый продавец будет это распоряжение отрабатывать по разному — по своему воспринимая что такое крупный, и в какой момент применяется скидка.
DG>Символьное описание:
DG>При переводе на символы образ "крупный" заменяется на символ "статус крупный":
DG> клиент имеет статус крупного, если он купил на 5 млн. руб;
DG> изменение статуса клиента происходит 10 января на основании оплаченных счетов за предыдущий календарный год,
DG> если на момент выставлении счета клиент имеет статус крупного, то он автоматически получает скидку 10%.
Этот пример, это формализация(уточнение), операция обратная абстракции. Формализация может выполнятся и вовсе без математики, наример: "не впускать клиентов маленького роста" => "не впускать клиентов чей рост ниже красной черты у входа".
А чтобы использовать математику как рез необходимо выполнить абстракцию, например: "в корзине десять яблок, если их разделить на двоих, по сколько достанется каждому" =абстракция-> "10/2 = ? -> 5" =формализация-> "каждому достанется по пять яблок".
Т.е. первое слово "эквивалентность" заменить на словосочетание "переформулирование через четкие множества", не как нельзя, так как там не выполняется формализация(символ "Z" не мение абстрактен чем образ "переменная").
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[2]: Заметка: Язык программирования
От: AlexCab LinkedIn
Дата: 06.07.12 16:08
Оценка:
Здравствуйте, maxkar, Вы писали:

M>Здравствуйте, AlexCab, Вы писали:


AC>>Мнения, особенно замечания и конструктивная критика, приветствуются!

M>История математики изложена скучно. И, похоже, взята из wiki...
В общем-то да.

M>Правильная история открытий и изобретений в нашем контексте следующая:

M>1. Изобретение абстракции числа (не 5 конкретных булок, а просто "5"). В IT именно на этом уровне работали первые вычислители (сумматоры, счетные машины).
M>2. Изобретение "абстрактной записи". Это на самом деле огромное достижение, без которого математика развивалась бы гораздо медленнее. До этого в математических трактатах так и было по всему тексту (пользуясь веткой из обсуждения) "единица деленная на объем воды, вытекающей из трубы бассейна". Замена "объема воды..." на z (ну и + математические символы) позволила сократить математические тексты и сделать их более сконцентрированными на задаче. В IT это появление "ассемблеров высокого уровня" — C и т.п., которые абстрагируются от "конкретики" и позволяют "кратко" записать какие-то вещи.
M>3. Развитие "алгебры" как отдельной области математики. В данном случае я под "алгеброй" имею в виду любые символьные вычисления и преобразования. Вроде a + b + e = a + c + e => b = c. Для применения подобных преобразований нужно накладывать определенные ограничения на сами элементы и операции. Преобразование выше накладывает определенные ограничения на оператор "+". Попытки использовать обобщенные алгоритмы (работающие в обобщенных терминах) в IT, потребовали механизмов описания тех самых ограничений. Сейчас таким механизмом являются системы типов. Отношение is-a как раз и задает возможность использовать обобщенные алгоритмы. Отсюда и OOP (в первую очередь — обобщенные алгоритмы) с его отношением наследования.
Да, похожи.

M>Хочу язык с first-class types.

Что такое "first-class types"?
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[2]: Заметка: Язык программирования
От: AlexCab LinkedIn
Дата: 06.07.12 17:11
Оценка:
Здравствуйте, maxkar, Вы писали:
M>При правильном моделировании у чайника останутся только свойства и никакого поведения.
Почему? У реального чайника есть поведение(например, выключается когда закипит, остывает etc.), его также нужно эмулировать

M>А какой из языков позволяет переносить объекты отдельно от отношений между объектами?

Даже естественный не позволяет, прежде чем(или во время) рассказывать человеку об объекте, нужно "синхронизировать" с ним контекст, иначе он просто не поймёт о чём речь.
M>Без возможности переносить объекты и отношения отельно...
Отношения объектов я тагже считаю объектами.

M>А ссылки можно?

Это моё предположение, сделанное на основе наблюдения: я знаю очень много людей любящих говорить/писать(такие люди когда хотят что то объяснить делают это словами) и очень мало таких что любят ещё и рисовать(такие люди прежде чем что то объяснять говорят что то вроде "у тебя есть листок и ручка"). Может быть мне просто не повезло.
M>Образное мышление нелинейнои может давать "быстрое" нахождение результата.
Что вы имеете ввиду под "нелинейно", как себе это представляете?
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[3]: Заметка: Язык программирования
От: maxkar  
Дата: 09.07.12 21:14
Оценка:
Здравствуйте, AlexCab, Вы писали:

AC>Здравствуйте, maxkar, Вы писали:


M>>Хочу язык с first-class types.

AC>Что такое "first-class types"?

А примерно то же, что и first-class function. Полноценный "элемент" программирования, доступный в рантайме и практически не отличающийся по свойствам от простых значений. Т.е. его можно сохранить в переменную, передать в качестве параметра, сконструировать новый тип. Например, считать что-нибудь из конфига и создать новый тип, затем добавить методы для обработки этого типа и скормить все это хозяйство в какой-нибудь обобщенный алгоритм. Или с шаблоном сопоставить (в рантайме, естественно!), например. Самое интересное будет, когда "тип" будет параметризовываться чем угодно. Там как раз можно будет делать что-то вроде:
  switch (config.groupOp) {
    match '+' : return Group(Int, +);
    match '*' : return Group(Int, *);
  }

В этом случае тип даже параметризуется "Обычными" значениями языка (функциями, + — функция сложения двух чисел). Вместе с зависимыми типами могут быть очень интеренсые результаты для доказательства корректности программ, например. Но мне это сначала для выразительности хочется попробовать .
Re[3]: Заметка: Язык программирования
От: maxkar  
Дата: 09.07.12 21:53
Оценка:
Здравствуйте, AlexCab, Вы писали:

AC>Здравствуйте, maxkar, Вы писали:

M>>При правильном моделировании у чайника останутся только свойства и никакого поведения.
AC>Почему? У реального чайника есть поведение(например, выключается когда закипит, остывает etc.), его также нужно эмулировать

Это не поведение чайника. Это же самое поведение можно приписать воде — она выключает чайник, когда закипит, остывает и т.п. В процессе кипения вода порождает пар (вообще новый объект) и потребляет энергию (которая через электричество идет). А можно развернуть поведение в другую сторону и всем будет заправлять "электричество". Вот и получается, что "выключение при закипании" — это не свойство чайника. Это свойство всей взаимодействующей системы. А у чайника так и останется состояние "включен/выключен + температура". Более того, если немного изменить параметры физического мира (давление изменить), то и процесс кипения изменится. Завязывать поведение чайника на весь физический мир неправильно — он как был, так и остался одним и тем же физическим чайником, изменилась именно внешняя среда. Так что большая часть поведения чайника на самом деле является частью внешней среды, физического мира, а не чайника. И оставление в модели только свойств как раз позволит перенести ваш чайник на высокогорье, где он и будет себя вести так, как подобает нормальному чайнику.

Более того, если копать глубже, выяснится, что "реального чайника" на самом деле не существует. Отдельные элементы вроде выключателя/нагревателя/стакана/термодатчика — существуют. А "физический чайник" — уже нет. Все это объединение мельчайших элементов называется чайником только в сознании наблюдателя ("идеальный чайник"). А вот в реальном мире может быть множество различных классификаций. Так, "чайник" и "мышка (возьмем маковскую, однокнопочную)" могут попадать в классификацию "девайс с кнопкой". В человеческом мышлении для этой категории короткого названия не существует, но категория вполне полноправная и ничуть не хуже, чем чайники. Отмечу также, что если немного позивращаться с подключением мышки, она тоже сможет при нажатии на кнопку кипятить воду (верятно, недолго и с летальным для себя исходом).

M>>А какой из языков позволяет переносить объекты отдельно от отношений между объектами?

AC>Даже естественный не позволяет, прежде чем(или во время) рассказывать человеку об объекте, нужно "синхронизировать" с ним контекст, иначе он просто не поймёт о чём речь.
M>>Без возможности переносить объекты и отношения отельно...
AC>Отношения объектов я тагже считаю объектами.

Я здесь имел в виду то, что "связь" между объектами задается "без изменения" самих объектов, извне. Вот пусть есть тот же чайник. Добавим отношения "полный" (зависит от наблюдателя!), "подходит к кухне" (тоже зависит от наблюдателя). Последнее отношение — внешнее по отношению и к чайнику, и к кухне. И если уже есть объекты "чайник" и "кухня", то хочется задать еще и отдельное отношение. В C# подобное делаеться extension method'ами. Если же мы хотим задать "абстрактный" тип отношения, придется создавать, например, интерфейсы.

Обратите внимание, как только мы начинаем моделировать отношения объектами, мы начинаем двигаться к тому самому "чайнику без поведения". В результате взаимодействия объектов "движение", "электроны", "вода", "чайник" образуется новый объект "кипение". Кстати, кипение — тоже понятие только внутри наблюдателя, на уровне физического чайника существует только движение молекул определенным образом.

AC>Может быть мне просто не повезло.

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

> Что вы имеете ввиду под "нелинейно", как себе это представляете?

Сам процесс этого "нелинейно" представляю очень плохо. Результат представляю очень хорошо — это результат "подсознательной" оценки, оценки без внутреннего диалога. Ну например, посмотрев код, я могу сказать, что он плохой. После первого прохода это больше "интуитивная" оценка. Через 5 минут я могу назвать 10 причин, по которым он плохой. Через полчаса — еще 3 причины. Вот поиск причин — это сознательный процесс, он линейный, с опробованием и отверганием гипотез. А начальная оценка "нелинейная". Можно взять и любую ситуацию, вызывающую сильные эмоции. Первая оценка будет тем самым "нелинейным" процессом. А вот попытки понять, почему эмоция была именно такая — линейным мыслительным процессом.
Re[4]: Заметка: Язык программирования
От: AlexCab LinkedIn
Дата: 10.07.12 08:39
Оценка:
Здравствуйте, maxkar, Вы писали:
M>...
Не со всем согласен, но спорить не буду т.к. уже "переключился" на другую тему.
Спасибо за ответы.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[2]: Заметка: Язык программирования
От: AlexCab LinkedIn
Дата: 13.07.12 13:54
Оценка:
Здравствуйте, DarkGray, Вы писали:
DG>советую прочитать Турчина "Феномен науки". там отчасти затрагивается устройство мышления
Спосибо, интересно.

4.7. Язык
...

Согласен(тольно он пропустил семантику("посредника" между именами(словами) и объектами реального мира), видимо потому что писал об языке в общем, а не о языке в контексте мышления).

DG>мы говорили о разнице между образным мышлением и символьным мышлением,

Теперь понял, меня запутали "образный"/"символьный".
DG>у Турчина тоже самое называется неформальным мышлением и формальным мышлением, и проводится такое же различие между ними.
С ним я тагже полностью согласится не могу, см. далее.

12.1. Формализованный язык
[..]
Понятие о формализованном языке можно определить следующим образом.

В общем согласен с определением "формализованый язык", но ИМХО оно крайне неудачно, я бы сказал: ФЯ это язык каждый объект L котрого точно соответствует объекту S(семантике), который в свою очередь точно(на сколько это возможно) соответствует объекту R(из Ri)(определение точных соответствий есть процесс формализации языка). Если эти соответствия не точны т.е. зависят от контекста, язык не формализованый. Не точным может быть отношение L-S(например слово "винт" в контексте "корабль" и в контексте "крепёж"), и отношение S-R(это когда объект S является абстрактным, и от контекста зависит к какому R он будет формализован, когда возникнет такая необходимость(именно мышление с использованием таких объектов S я называю "абстрактным")).

Преобразование L1 → L2 определяется исключительно языковыми объектами Li, которые в нем участвуют, и не зависят от тех языковых представлений Si, которые им соответствуют по семантике языка. Иначе говоря, языковая деятельность зависит только от «формы» языковых объектов, но не от их «содержания» (значения).

Т.к. в формализованном языка множества Li, Si и Ri точно соответствуют друг другу, можно использовать только элементы множества Li, не обращаясь к Si.

Результат преобразования языкового объекта Li зависит не только (и не столько) от вида самого объекта Li, но и от представления Si, которое он порождает в голове человека, от ассоциаций, в которые он входит, а, следовательно, от личного жизненного опыта человека.


Т.к. соответствие объектов L,S и R, в не формализованном языке зависит от контекста, его будет необходимо сначала сконструировать(чтобы собственно понимать значение каждого слова), для чего и используется множество S(семантика).

В первом случае мы называем язык формализованным, во втором неформализованным.

В обоих случаях формализованность языка приводит к определенному отделению синтаксиса от семантики, к отрыву материальных языковых объектов от связанных с ними представлений, к приобретению языковыми объектами качеств независимой системы.

Вот тут он ИМХО не прав, формализация языка гвоздями прибивает синтаксис к семантике, что собственно и позволяет безопасно отбросить семантику((!) не абстрагироваться от семантики, а именно отбросить).

В зависимости от того, какого типа язык используется, можно говорить о неформальном и формальном мышлении.

Тут по моему он также ошибается, так как ключевую роль в мышлении играет именно семантика, а потому для того чтобы назвать мышление формальным достаточно чтобы объекты S точно соответствовали объектам R, т.е. от языка это не зависит. Например использование контекст-зависимого слова "винт" не делает фразу "гребной винт лодочного мотора Yamaha 5 CMHS закреплён винтом М14" не формальной.

Но с другой стороны, по паре отрывков, сложно судить о том что имел ввиду автор, прочитаю полностью тогда смогу сделать более точные выводы.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[4]: Заметка: Язык программирования
От: AlexCab LinkedIn
Дата: 14.07.12 14:08
Оценка:
AC>>В общем согласен с определением "формализованый язык", но ИМХО оно крайне неудачно, я бы сказал: ФЯ это язык каждый объект L котрого точно соответствует объекту S(семантике), который в свою очередь точно(на сколько это возможно) соответствует объекту R(из Ri)
DG>это требование никогда не выполняется.
Ну в общем да, выполняется "на сколько это возможно". По началу я подумал заменить на "на сколько это нужно" но это будет не правильно так как речь об языке в целом а не о языке в рамках некоторой задачи(в рамках некоторой задачи можно, насколько это нужно, формализовать часть или даже весь не формализованный язык, но это не сделает его формализованным вне рамок задачи). ФЯ это именно такой язык в котором любой, взятый отдельно(от контекста), элемент L может быть заменён элементом R(реальный объект это не обязательно физический объект, это любой объект существующий в реальном мире например объект "1" или объект "объект") и на оборот.

DG>Логика первого порядка, или арифметические вычисления являются формальными языками, но при этом точного соответствия с R никогда не происходит:

ЛПП и арифметика точны только на своём "уровне", например для арифметики это когда объектами R являются сами цифры и операции над ними(т.е. теоретическая математика), без привязки к каким либо другим объектам. А, например, когда языком математики записывают количество мест(к примеру 42) это уже не формальная запись(абстрактная в данном случае), т.к. сама по себе цифра 42 нам не даст ответа на вопрос "чего?", а "количество мест" это уже не язык математики.
DG>один точный метр в природе днем с огнем не сыщешь, не говоря уже про эталонные чайники.
Не нужен точный, нужен "конкретно этот метр" или "конкретно этот чайник".

AC>>Т.к. в формализованном языка множества Li, Si и Ri точно соответствуют друг другу, можно использовать только элементы множества Li, не обращаясь к Si.

DG>на практике используется чуть другое требование:
DG>т.к. Li передает Ri с точностью достаточной для решения задачи, то можно использовать Li не обращаясь к Ri.
Ну да, так как все три(L,S,R) соответствуют друг другу.
"с точностью достаточной для решения задачи" это относится к языку формализованному для конкретной задачи, вне её он уже не будет таковым.

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

Ты "смотришь не стой стороны" на проблему "формализации формализованного языка", стоит так:
Есть некоторый ФЯ возможностей которого достаточно для описания задачи "необходимо посчитать кол-во мест".
Есть другой ФЯ с помощью которого можно описать как задачу "необходимо посчитать кол-во мест" тик и "необходимо посчитать сколько требуется кислорода".
Оба они точны, просто во втором есть дополнительные L элементы: вес, возвраст, физиологическое и психологическое состояние и т.д.

AC>>

AC>>В обоих случаях формализованность языка приводит к определенному отделению синтаксиса от семантики, к отрыву материальных языковых объектов от связанных с ними представлений, к приобретению языковыми объектами качеств независимой системы.

AC>>Вот тут он ИМХО не прав, формализация языка гвоздями прибивает синтаксис к семантике, что собственно и позволяет безопасно отбросить семантику((!) не абстрагироваться от семантики, а именно отбросить).
DG>если это утверждение верное, то почему это не видно на примере .net-а?
DG>где семантика задана .net-ом, а синтаксис можно брать произвольный: C#, VB.Net, F#, IL и т.д.
1)Наличие нескольких синтаксисов для одной семантики не делает язык не формализованным.
2)Современные ЯП, из-за стремления быть более "человекоподобными", давно не являются формализованными(полиморфизм, вывод типов, перегрузка, и прочее метапрограммирование).
DG>с числами всё тоже самое. При общей семантике операций сами числа можно записывать как угодно: справа налево, сверху вниз, позиционное исчисление, двоичная запись, дополнительный код, простые дроби, десятичный дроби и т.д.
Это потому что синтаксисы "1","один", "one" etc. имеют одну и туже семантику.
DG>имхо, как раз наоборот, чем сильнее формализация — тем сильнее семантика отделяется от синтаксиса, из-за того, что как раз уменьшается роль непроговоренной информации, которую и пыталась хоть как-то передавать жесткая связка синтаксиса и семантики.
Нет, уменьшение роли не приговорённой информации как раз возможно благодаря тому что, при разработке язык, синтаксис строго связывается с семантикой а та в свою очередь с реальными объектами, а потому пользователи языка не задаются вопросами вроде "какой именно чайник сейчас имеется ввиду?".
one
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[5]: Заметка: Язык программирования
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 14.07.12 15:11
Оценка:
DG>>где семантика задана .net-ом, а синтаксис можно брать произвольный: C#, VB.Net, F#, IL и т.д.
AC>2)Современные ЯП, из-за стремления быть более "человекоподобными", давно не являются формализованными(полиморфизм, вывод типов, перегрузка, и прочее метапрограммирование).

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

Поведение .net-а полностью определяется самим .net-ом. О какой тогда неформализованности ты говоришь?
Re[6]: Заметка: Язык программирования
От: AlexCab LinkedIn
Дата: 14.07.12 18:48
Оценка:
Здравствуйте, DarkGray, Вы писали:
DG>>>где семантика задана .net-ом, а синтаксис можно брать произвольный: C#, VB.Net, F#, IL и т.д.
AC>>2)Современные ЯП, из-за стремления быть более "человекоподобными", давно не являются формализованными(полиморфизм, вывод типов, перегрузка, и прочее метапрограммирование).
DG>ранее утверждалось, что формализованный язык — это такой язык, поведение которого полностью определяется самим языком, и не требуется внешняя информация.
Если это писал то либо ошибся либо ты меня не понял, кинь цитату, будем разберется.
По моему скромному мнению язык это средство описания, он не имеет поведения("ничего не делает сам по себе").

DG>Поведение .net-а полностью определяется самим .net-ом.

Причём здесь поведение платформы, мы ведь о языке говорим?
DG>О какой тогда неформализованности ты говоришь?
О неформализованности синтаксиса, когда одна и та-же синтаксическая единица может иметь разную семантику в зависимости от контекста, например перегруженный оператор.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[4]: Заметка: Язык программирования
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 20.07.12 08:10
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>Человек думает образами, слова лишь используется для вызова нужных образов. У человека память ассоциативная, и слова используются как ключи для доступа к нужным образам, но после того как образ вызван, рассуждение уже идет в виде цепочки образов.


DG>Например, периодически люди говорят "ой! слово вылетело; ой, забыл как называется". При этом человек может описать свойства, может строить рассуждения, и т.д. у него лишь временно "пропала" обратная ссылка для преобразования образа в кодирующего его слово.

DG>Или можно взять знакомые объекты: соседей по дому; рядом стоящие здания и улицы и т.д. Мы можем строить достаточно сложные рассуждения о том, кто где находится, у кого какие привычки; как пройти по улицам между зданий в заданную точку — но при этом у нас нет отдельных слов для обозначения каждого полузнакомого нам человека, или для каждого здания и улицы которое мы видели, знаем и помним.
DG>То, что человек думает образами, а не словами — демонстрирует также полиграф (детектор лжи). Даже если человеку начать просто показывать слова — он начнет волноваться, радоваться, печалится, потеть, ерзать, будет меняться дыхание, пульс и т.д., потому что каждое слово будет вызывать определенный образ, причем значительная часть образов настолько "большая", что они затрагивают даже эмоциональный и физиологический центры мозга.

DG>Вот это всё лишь малая часть того образа, который возникает в голове у каждого человека — когда появляется слово "чайник", и именно такое большое кол-во взаимосвязей, и позволяет корректно среагировать на фразу "сделай мне, пожалуйста, чая".


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

Если поменять в твоем тексте образ на понятие то будет более менее правильно.
Re[5]: Заметка: Язык программирования
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 20.07.12 12:30
Оценка:
I>Ты попутал "образ" и "понятие". Понятие это абстракция и фактически слово есть представление этой абстракции. То есть, это абстрактное мышление. Образ это уже конкретное мышление. Т.е. эти вещи противоположны друг другу.

Понятия и образ — это разные плоскости.

Понятие — это когда образу Ri присваивают ключ Li для быстрого доступа к нему.
Образ — это "элемент мышления", который имеет большое кол-во неявных связей с другими "элементами мышления".

Конкретика и абстракция еще одна ось. Всякий образ уже является каким-то обобщением, а понятия могут быть очень конкретными: например, понятие "Россия, Москва, Красная площадь, Мавзолей" — достаточно конкретно.
Можно лишь говорить о том, что какие-то образы более абстрактны(или более конкретны), чем другие, тоже самое и о понятиях.
Так же можно сравнивать понятия с образами, например, что понятие Li вызывает образ Ri, который более конкретен, чем образ Rj; или в обратную сторону — образ Rj можно закодировать понятием Lj, которое более абстрактно, чем понятие Li.


Возьмем, например, две фразы:
"просидев 8 часов на сложном совещании, так круто! выйти в коридор и просто по нему прогуляться!!, или после тяжелой недели — так круто вырваться с ребятами и оторваться по полной!, ни в чем себе не отказывая!!"
"свобода — это круто!!"

Обе эти фразы рассказывают об одном и том же явлении, о явлении свободы, и насколько это хорошо.
Обе эти фразы образные, в частности, понятие круто, используется в переносном своем значении для передачи образа хорошо, прекрасно, эмоционально положительно и т.д. В тоже время можно отметить, что первая фраза более образная, чем вторая.
Свобода — это чистой воды абстракция, ни о какой конкретике в обоих фразах говорить не приходится. И соответственно, не наблюдается никакого противоречия между образностью мышления и возможностью размышлять об абстракциях.
Re[6]: Заметка: Язык программирования
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 20.07.12 12:55
Оценка:
Здравствуйте, DarkGray, Вы писали:

I>>Ты попутал "образ" и "понятие". Понятие это абстракция и фактически слово есть представление этой абстракции. То есть, это абстрактное мышление. Образ это уже конкретное мышление. Т.е. эти вещи противоположны друг другу.


DG>Понятия и образ — это разные плоскости.


Справочник по когнитивной психологии с тобой не согласен.

DG>Понятие — это когда образу Ri присваивают ключ Li для быстрого доступа к нему.

DG>Образ — это "элемент мышления", который имеет большое кол-во неявных связей с другими "элементами мышления".

см выше, про справочник.

http://psylist.net/obh/00017.htm — первые абзацы как раз про то что я тебе говорил.

Извини, дальше я скипнул не читая.
Re[7]: Заметка: Язык программирования
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 20.07.12 13:19
Оценка:
I>Справочник по когнитивной психологии с тобой не согласен.

полное название справочника, пожалуйста, чтобы не было разночтений.

DG>>Понятие — это когда образу Ri присваивают ключ Li для быстрого доступа к нему.

DG>>Образ — это "элемент мышления", который имеет большое кол-во неявных связей с другими "элементами мышления".

I>см выше, про справочник.


I>http://psylist.net/obh/00017.htm — первые абзацы как раз про то что я тебе говорил.


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

по определению ниже

Теоретическое понятийное мышление – это такое мышление, пользуясь которым человек в процессе решения задачи обращается к понятиям, выполняет действия в уме, непосредственно не имея дела с опытом, получаемым при помощи органов чувств.

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

В приведенных по ссылке абзацах затрагивается еще две оси: связанность образов с ощущениями, а также возможность формирования образа (например, образа дракона) без наличия непосредственного опыта из реальности. И эти оси полностью ортогальны отношениям абстракности-конкретности, образности, понятийности и т.д..
Re[3]: Заметка: Язык программирования
От: 0x7be СССР  
Дата: 20.07.12 13:53
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Предлагаю переверстать в нашем шаблоне, отредактировать и выложить для обсуждения на наш сайт. Ну, а там, глядишь, подредактируем и пустим как официальную статью.

VD>Автор согласен?
А это точно ещё работает?
Что-то у меня этот процесс в свое время заглох после отсылки сверстанной статьи.
Re[4]: Заметка: Язык программирования
От: AlexCab LinkedIn
Дата: 20.07.12 14:07
Оценка:
Здравствуйте, 0x7be, Вы писали:
0>Что-то у меня этот процесс в свое время заглох после отсылки сверстанной статьи.
Аналогично.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[8]: Заметка: Язык программирования
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 20.07.12 15:25
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>полное название справочника, пожалуйста, чтобы не было разночтений.


Под рукой нет. Можешь поискать книжки в инете, разночтений в этой части по моему и нет. Вот например http://www.gumer.info/bibliotek_Buks/Psihol/makl/12.php

I>>см выше, про справочник.


I>>http://psylist.net/obh/00017.htm — первые абзацы как раз про то что я тебе говорил.


DG>это лишь какая-то ссылка в интернете, на справочник это не тянет, определения вводятся ужасно.


В психологии такое есть, надо продираться через все термины и определения

DG>по определению ниже

DG>

DG>Теоретическое понятийное мышление – это такое мышление, пользуясь которым человек в процессе решения задачи обращается к понятиям, выполняет действия в уме, непосредственно не имея дела с опытом, получаемым при помощи органов чувств.

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

Понятия и образы дополняют, а не исключают друг друга.

Маг, хоббит — абстракции. Но каждой абстракции можно сопоставить образ, который можно построить и в воображении на основе имеющегося опыта. Например, хоббит это вобщем просто человек очень маленького роста.

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


А что тебя смущает ? Опыт из реальности может быть и опосредованным, мозг ведь умеет синтезировать всякую всячину.
Re[4]: Заметка: Язык программирования
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.07.12 15:38
Оценка:
Здравствуйте, 0x7be, Вы писали:

0>А это точно ещё работает?


Работает 100%. Но процесс может быт не быстрый.

0>Что-то у меня этот процесс в свое время заглох после отсылки сверстанной статьи.


Как называлась статья?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Заметка: Язык программирования
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 20.07.12 18:34
Оценка:
I>А что тебя смущает ? Опыт из реальности может быть и опосредованным, мозг ведь умеет синтезировать всякую всячину.

Меня не устраивает, что большинство терминов в той литературе, на которую ты ссылаешься, введены с серьезными нарушениями правил терминоведения.
Re[10]: Заметка: Язык программирования
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 25.07.12 12:07
Оценка:
Здравствуйте, DarkGray, Вы писали:

I>>А что тебя смущает ? Опыт из реальности может быть и опосредованным, мозг ведь умеет синтезировать всякую всячину.


DG>Меня не устраивает, что большинство терминов в той литературе, на которую ты ссылаешься, введены с серьезными нарушениями правил терминоведения.


Поверь — не я писал эти книги. Терминология это вообще в психологии больное место,в разных теориях схожие понятия могут иметь разные названия. В случае с понятием и образом все более менее сильно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.