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

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

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

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

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


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


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


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

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

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

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

Собственно после всего этого возникло 2 вопроса:
1 — зачем все это написано?
2 — почему вы это написали?
йник
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: Заметка: Язык программирования
От: batu Украина  
Дата: 29.06.12 10:27
Оценка: 2 (1)
Здравствуйте, AlexCab, Вы писали:

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

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

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

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

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

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

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

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

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

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

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

В тоже время растет и порог входа в хорошие программисты: всё сильнее растут требования к образному мышлению программиста (умению подмечать как работает реальность), и одновременно растут требования к умению использовать символьное мышление (умению проводить сложные и длинные преобразования)
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[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[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[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[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[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>

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