Обсуждение
Читать и комментировать в ЖЖ ↗
Я уже пару лет назад понял, что я совсем не математик :).
Т.е. теорию типов я еще могу разуметь, даже наверное в каком-нить новомодном observational расширении, но теорию категорий уже тяжело.
Хотя мне Осман объяснял, вроде понятно, но у самого моск на эту тему не фокусируется совсем :).
Комментарий
ну да информатика в идеале должна заниматься отдельно синтаксисом, семантикой и прагматикой
Комментарий
Goguen кстати придумал семейство языков, в итоге превратившихся в Maude
Комментарий
Maude, кстати, вполне жив. У них версия 2.6 вышла в апреле 2011 года, и куча проектов не только в США, но и Испании (например, http://moment.dsic.upv.es/). Они определяют Maude и в том числе как семиотический фреймворк (а не только как логический фреймворк), что примерно соответствует моему пониманию единства всех этих подразделов информатики.
Комментарий
Мир у нас один, многие термины для его описания пока синонимичны (избыточность). Действительно, по закону эволюции материи (это только один из примеров наблюдаемых фактов) должна произойдёт унификация (стандартизация). Можно открывать топик на тему "Когда?" (тут, правда, нужны цифры и формулы для точного прогноза)
Комментарий
Или наоборот, по тому же закону эволюции произойдёт взрыв разнообразия, типа кембрийского взрыва :-)
Комментарий
Нет, многочисленные факты (напр., здесь http://protomodel.ucoz.ru/publ/1-1-0-26 ) доказывают, что, т.к. сейчас разнообразие у нас уже есть, то как раз должен произойти переход к этапу "однообразия". Скорее всего в формате единой модели мира
Комментарий
Если убрать синонимичность освободятся ресурсы мозга, которые отвечали за поддержание этого разнообразия. Свободные ресурсы мозга можно будет занять увеличением сложности обрабатываемых моделей. Увеличением концептов.
Кстати, интересны оценки эти ресурсов. На днях в вики познакомился с теорией модулей, структурно-функциональной единицей коры больших полушарий мозга (теория спорная). Получается, что их около 3 млн штук, из которых (предположительно) 2 млн используются под ассоциативный функционал, т.е. память. Гипотеза: словарь одного человека может содержать не более 2 млн концептов. Это не так и мало, порядка 100 концептов в сутки на протяжении всей жизни.
Похоже это верхняя оценка, т.к. описывались люди, например операторы телефонных станций, которые могли помнить порядка 10 тысяч абонентов, кроме всей прочей "бытовухи". Т.е. абонент - концепт ассоциированный с частями имени (еще набор концептов), номерами (возможно, единственный показатель, который можно прямо перевести в биты/модули ???). Опционально, с каждым абонентом может ассоциироваться адресуемый абонент, а так же прочая справочная информация (адреса, компании) и т.д.
Интересно было бы взглянуть на работы, в которых оценивается информационная емкость изучаемого материала.
Комментарий
Тратить ресурсы на естественные мозги, думаю, менее целесообразно, чем на разработку искусственных (будет ИИ, будет и всё остальное)
Комментарий
А пока -- оставь надежду, всяк сюда входящий не-математик...
Не слишком ли пессимистично звучит?
Начнем с Goguen-а, с широтой его научных интересов. То, что математик занимается приложениями в семиотике - скорее исключение. Каждая специальность имеет свою ограниченную область деательности. Мы ведь не требуем от математиков создавать матмодели для физиков, этим занимаются сами физики, математики создают матаппарат. С ТК та же история. Деятельность Goguen-а можно сравнить с Ньютоном или Бернулли - когда один человек и разрабатывал средства анализа и использовал их для создания физических теорий. Такое не может быть массовым и не может возникнуть такой профессии.
Какая профессия необходима вместо этого? Выходом было бы введение ТК в общий курс того, что Вы называете верхним образованием. Тогда специалисты по семиотике умели бы строить свои модели, пользуясь математическими результатами, как до сих пор это делали физики. Звучит слишком очевидно, верно?
Мой комментарий не возник бы, не прочти я у Вас историю проникновения в советскую школу предмета информатики. Это очень интересно, что разработке обучения алгоритмическим мыслительным приемам предшествовало возникновение социального заказа (надо же, от военных) и создание специальной педагогической исследовательской группы. Мне хочется провести параллели с наличной ситуацией с обучением ТК. Здесь у нас есть та же проблема - сделать обучение определенной мыслительной деятельности более доступным, - но нет ни педагогической группы для ее решения, ни соцзаказа для создания такой группы.
Что мне нравится в посте - так это то, что он ставит для математики какую-то позитивную задачу (перестроить ТК, чтобы снизить порог входа, набрать больше примеров применения). Чаще приходится слышать обвинения в том, что чистая математика занимается чем-то ненужным, коль скоро трудно объяснить неспециалисту, чем она занимается. Как раз недавно я прочитал несколько дискуссий в ЖЖ о том, как объяснять новичкам ТК, которая оказалась примером такой необъясняемой чистой математики, и нахожусь под впечатлением. Не могу сказать, чтобы эти обсуждения завершились чем-либо особо конструктивным. Приведу ссылки
http://a-shen.livejournal.com/16943.html
http://a-shen.livejournal.com/17258.html
http://avva.livejournal.com/1932594.html
http://avva.livejournal.com/2280584.html
(Не то, чтобы это был совет их читать, просто хочется для полноты видеть этот список, кому-то в будущем он может оказаться полезен). Единственным нетривиальным мне показался комментарий с уточнением задачи: кого мы хотим обучать, и чего хотим добиться от обучаемых, вот эта ветка.
Сейчас в ЖЖ присутствуют две группы, так или иначе связанных с ТК, - это, во-первых, математики, уже изучившие ТК где-то вне сети и использующие ее “на работе”, и, во-вторых, программисты, которых чаще всего интересуют не категории как таковые, а “монады в Хаскелле”. Разобравшись с монадами, они обычно пишут собственное изложение под названием monad tutorial, после чего благополучно забывают про предмет и перестают о нем упоминать. Но, поскольку именно они порождают основной блоготраффик по обучению ТК, судить об обучении ТК удобнее по ним.
Что здесь заметно - спрашивают учебники (что естественно). Что не нравится в существующих учебниках - то, что все обучающие примеры сугубо математические. Что тоже естественно, поскольку ТК возникла и развивалась как математическая деятельность и была нацелена (до сих пор) на саму математическую деятельность. Это объясняет причины такого положения, но не указывает выход. Положение с программистами половинчатое - есть учебники по ТК для них, но это скорее theoretical computer science, чем software engineering, - примеры использования категорий в них исчерпываются категорными семантиками для теории типов, которые, в свою очередь, используются для построения алгебраических денотационных семантик типов данных в языках программирования. Есть применения понятия коалгебры для описания взаимодействующих процессов, но это больше в статьях, чем в учебниках. То есть это математика для CS, а не примеры из ежедневного прораммирования. Итого - программисты пытаются впитать математические примеры, плачут, но продолжают грызть кактус.
Комментарий
Самыми близкими к непосредственно программированию оказываются уже упомянутые монады - парадокс с которыми заключается в том, что понятие монады не привязано к отдельной категории, а описывает структуру на произвольной категории, из-за чего ни о какой конкретной категории при объяснении обычно не говорят, и тренировки мышления примерами работы с отдельными категориями нет. В принципе, в качестве категории, от которой мы отталкиваемся при упоминании монад, можно сослаться на какую-то из семантик для подходящей теории типов, это будет реальный, но слишком сложный пример, обычно на него не ссылаются. То есть имеем отсутствие набора простых учебных примеров для тренировки мышления. Как следствие - хотя монада нужна в Хаскелле в точности для возможности один раз воспользоваться алгебраической (по характеру используемых методов) конструкции построения одной категории из другой (“морфизмов с побочным эффектом” из “чистых морфизмов”), этой простой рефлексии я ни в одном monad tutorial-е не увидел. Допустим, я не все читал, но тенденция именно такова. Сомневаюсь, что многие из пишущих отдают себе отчет, что работают в двух категориях, что они отличат эти категории от, например, категории множеств, в которой далеко не все виды теории типов имеют семантику. Как назло, в стандартной библиотеке Хаскелля “функтор” - это не функтор между любыми категориями, а эндофунктор из некоторой фиксированной (но нигде не специфицируемой) категории хаскеллевских типов в себя, что только усугубляет неразбериху в голове новичка.
Получается, ситуация в ТК сходна с таковой в алгоритмике, когда ей обучали сразу вычислительным задачам на Фортране или абстрактным преобразованиям на Лиспе в ВУЗах. Когда школьных примеров с программированием простыми командами робота-исполнителя еще не придумали. Но на спуск порога входа до дошкольного возраста в алгоритмике ушло два десятка лет, если я правильно понял, - два десятка лет работы занимающейся этим педагогической группы. Точно так же, ожидать появления “общеобразовательной ТК” без многолетней работы специально организованной для этого группы я бы не стал.
Вторым прорывом с алгоритмикой, если я верно понял, был отказ от сложного синтаксиса для школы (и от синтаксиса вообще - для дошкольников). Не знаю, насколько это имеет отношение к ТК. Основные понятия - категория/функтор/естественное преобразование - образуют конкатенативный двумерных синтаксис (т.е. теория 1-категорий может быть аксиоматизирована внутри бикатегории), для которого используется общематематическая нотация термов и равенств, нотация коммутативных диаграмм и альтернативная (дуальная, в определенном смысле) нотация струнных диаграмм. По наблюдениям, специалисты по CS используют общематематическую нотацию, monad-tutorial-щики предпочитают непосредственно ситаксис своего языка программирования. В каком направлении упрощать синтаксис, снижает ли порог входа использование струнных диаграмм (близкое к отказу от синтаксиса) - а приори непонятно и требует исследований на обучаемых. Важен ли конкатенативный синтаксис (без переменных), или проще в понимании трансляция в синтаксис аппликативного языка (с лямбдами) - точно так же трудно сказать (тут практика доказательств подсказывает, что диаграммный поиск удобнее вывода лямбда-выражения по типу, хотя практика программирования заставляет предпочитать переменные для сложных случаев рекурсии). Двумерность же, скорее всего, неустранимый фактор, учитывая высказывание МакЛейна, что категории вводились для возможности работы с естественными преобразованиями.
Оптимистическая часть моего вывода отсюда - поставить "деятельность по переформулированию самых разных теорий на промышленную основу" требует постановки задачи по преподаванию ТК неспециальстам, каковую ставить можно и нужно. Пессимистическая - без работы занимающейся именно этим группы результата не будет, а без соцзаказа такая группа не возникнет. Без него - остается надеяться, что всё “вырастет” “как-то само” за неопределенные “лет десять”, как Вы и написали.
Комментарий
1. Вы абсолютно правильно понимаете корень проблемы с теорией категорий и computer science: пока этим занимаются алгоритмики, не стоит ожидать большого прогресса. Вот вы написали, что "далеко не все виды теории типов имеют семантику" -- но дело в том, что "семантика" у спецов по computer science и "семантика" у модельеров данных, а также программистов больших программ, основанных на domain-driven design парадигме, и вообще у всех прикладных программистов -- это абсолютно разные семантики. Мне обычно стоит некоторого труда объяснить программистам, что данные -- это про аккуратное отображение мира. И мне кажется, что теория категорий может помочь именно в этом: в работе с множеством разнородных баз знаний, для чего нужно устанавливать мэппинг между этими базами знаний (и определять этот мэппинг каким-то простым механизмом, который, как мне кажется, должен прийти как раз из теории категорий). Ну, и все программисты спотыкаются о "разные логики" -- как я понял, Goguen пытается решить этот вопрос, вводя institutions. Аккуратное представление мира и рассуждения для этого представления. Это совсем не то, что обычно обсуждают программисты на хаскеле. Как сказал А.Г.Кушниренко про добавку моделирования данных к алгоритмике, "в третьем классе, наверное, рано -- но в ВУЗе уже поздно". Сейчас же про эту "семантику данных" (а не семантику программ), включая когнитивную науку и семиотическую составляющую не говорят и в ВУЗе.
2. Я также согласен с вашим выводом, что прогресса можно ожидать не столько "от учёных", сколько от людей, занявшихся дидактикой для теории категорий. Я не думаю, что тут будет какой-то "общественный заказ" (финансирование?) или "специально организованная группа". Группу друзей и единомышленников, даже если они живут в разных городах и работают в разных фирмах, легко назвать "специально организованной группой". Когда я в конце 80-х занимался этой самой школьной информатикой, не было там никакой "специальной организации" и "специально собранной группы людей". Были разные люди, которые понимали важность задачи, и каждый на своём рабочем месте делал, что мог: академики общались с людьми из Политбюро, профессура организовывала студентов, а такие как я им всем помогала -- без какой-либо специальной организации с единым центром. Это вполне возможно сделать и сегодня, в любой предметной области. Нужно просто ставить задачу и решать её.
3. У нас есть некоторые разногласия по отношению к "чистой математике", но я совершенно согласен: путь теории категорий в прикладные области лежит через дизайн курса по преподаванию теории категорий неспециалистам. Сейчас путь познания ТК лежит через обширные области математики, после чего рассказывается о собственно теории категорий. Мне кажется, что есть более простой путь: через диаграммные поначалу, а потом текстовые модельные среды, где решаются задачи теории категорий -- примерно так же, как это происходит с треугольниками в геометрии и роботом в программировании. Да, диаграммные головоломки -- от простых к сложным, с сообщением терминов, позволяющих эти головоломки обсуждать. 300 головоломок -- это примерный объем школьного курса. Мне кажется, что это должен быть ещё школьный курс.
Комментарий
В идеале, нужен дошкольный курс. Ведь это основа мышления, на которое можно смэпить многие логики. Чем раньше обучение, тем надежнее фиксация и выше скорость доступа к "аппарату" теории, тому самому что занимается преобразованиями.
Очень хотелось бы внести свой вклад в работу группы, но прежде самому нужно разобраться с ТК. Хабросообщество по ТК рекомендовало мне вот такие материалы: http://habrahabr.ru/qa/17902/
PS: Огромное спасибо x_ghbdtn за ценные мысли и ссылки!
Комментарий
Обучение - ведь тоже морфизм? Морфизм по переводу внешнего морфизма во внутренний, в состояние "обучен", в котором морфизм интериоризован и становится альтернативным морфизмом для наблюдаемых категорий.
Комментарий
Вы абсолютно правильно понимаете корень проблемы с теорией категорий и computer science: пока этим занимаются алгоритмики, не стоит ожидать большого прогресса.
Мое понимание проблемы сводится к попытке сопоставить ситуацию с ТК и прочитанную в этом же блоге историю со школьной информатикой. Ничего странного, если Вы видите нечто знакомое. Наезжать на CS я не собирался, эти люди тоже занимаются своим делом.
"семантика" у модельеров данных
Как сказал А.Г.Кушниренко про добавку моделирования данных к алгоритмике, "в третьем классе, наверное, рано -- но в ВУЗе уже поздно". Сейчас же про эту "семантику данных" (а не семантику программ), включая когнитивную науку и семиотическую составляющую не говорят и в ВУЗе.
Увы, мое образование ограничивается теми же ВУЗовскими знаниями о реляционных БД, никакой когнитивной науки, так что могу только догадываться, о чем Вы. У модельеров данных, как я могу судить, глядя со стороны на все эти онтологии, “семантика” есть простое сопоставление элементов модели фактам предметной области, т.е. почти чистая прагматика (с поправкой на то, что прагматика логики не содержит и превращение предметной области в околовитгенштейновский логический универсум фактов представляет из себя отдельную задачу по структурированию и формализации). Насколько я ошибаюсь?
Если понимать упоминание отдельных находок, Goguen-овских в том числе, как возможные мотивационные примеры использования ТК для специалистов когнитологов и семиотиков, то с этим я соглашусь.
прогресса можно ожидать не столько "от учёных", сколько от людей, занявшихся дидактикой для теории категорий. Я не думаю, что тут будет какой-то "общественный заказ" (финансирование?) или "специально организованная группа".
О, “дидактика”, вот верное слово. Дидактические материалы по ТК!
Под соцзаказом я понимал надежду участников проекта на востребованность результата, выраженную в объективизированной форме - хоть гранты, хоть моральное финансирование в виде блогопопулярности. Спрос, рыночными словами. Спрос на ТК-образование для нематематиков в глобальном масштабе отсутствует. Те же формы спроса, которые появились - приходится опять вспомнить хаскеллистов, - обуславливают наблюдаемые сейчас формы активности по популяризации ТК, в данном случае monad tutorial-ы. Если учить некого, то и учительской деятельности не будет. По крайней мере, мне это кажется связанным.
Были разные люди, которые понимали важность задачи, и каждый на своём рабочем месте делал, что мог: академики общались с людьми из Политбюро, профессура организовывала студентов, а такие как я им всем помогала -- без какой-либо специальной организации с единым центром.
Это я ошибочно так решил, что организация была, извиняюсь. “Принимались безумные решения по линии «догнать и перегнать»... вся страна вдруг начала учить информатику. Никто не знал, как её учить. В МГУ на мехмате собралась группа «Аттик», которая разработала вузовский учебник...” Введение предмета информатики в школе, очевидно, было решением министерства образования. Получается тогда они ввели предмет без учебников? Минобр не озаботился организовать разработчиков учебника и методики преподавания? Или официальные разработчики-методисты были, да - не те? Удивительно.
Комментарий
Это вполне возможно сделать и сегодня, в любой предметной области. Нужно просто ставить задачу и решать её.
Чтобы процесс пошел, нужен какой-то жизненный цикл - реализовать очередную версию методики/дидактики, проверить ее работу на реальных обучаемых, проанализировать результат, ввести исправления в новую версию, повторить. Во всяких ЖЦ Вы разбираетесь лучше меня))). Ключевой момент - реальные обучаемые, без них работа не пойдет - мы пока не умеем технологически штамповать эффективные практики обучения, у нас только есть отдельные примеры таких практик.
В случае со школьной алгоритмикой, когда “вся страна вдруг начала учить информатику”, новые версии дидактики обкатывали, как я понимаю, в массовом порядке. Или я опять попал впросак?
Тут я сместил акценты с момента формирования самой группы, но он тоже есть. Чтобы “ставить задачу и решать”, нужно, чтобы кто-то столкнулся с этой задачей. Ситуация же такова, - я сужу по обсуждениям, ссылки на которые висят выше, - что на данный момент никто из проф-математиков в таком занятии не видит ни возможности, ни необходимости. ТК рассматривают как ориентированный исключительно на внутриматематическую деятельность аппарат. Увы.
Мне кажется, что есть более простой путь: через диаграммные поначалу, а потом текстовые модельные среды, где решаются задачи теории категорий -- примерно так же, как это происходит с треугольниками в геометрии и роботом в программировании. Да, диаграммные головоломки -- от простых к сложным, с сообщением терминов, позволяющих эти головоломки обсуждать.
Что такое “текстовые модельные среды”? Подразумевается компьютерная среда или текстовые задачи?
Дошли до конкретики - какие 300 головоломок. Тут у нас больше вопросов, чем ответов. Тех же, что и с алгоритмикой - чему мы хотим научить, и как. Диаграммная нотация - важная часть ТК, без нее неудобно (“Вдруг я получаю от своего корреспондента вопль души: «Диаграмму! Полцарства за диаграмму!»”). Но к диаграммам тоже надо привыкать! Может лучше начинать не с них, а с содержательной части? В той же алгоритмике конкретный синтаксис был препятствием для дошкольников. Какими должны быть первые шаги - умение оперировать диаграммами (еще без знания категорной аксиоматики; но что можно без аксиоматики с ними делать?) как формальной системой (нематематикам трудно работать с формальными системами без заданной семантики, их мотивирует семантика/прагматика) или конкретные примеры категорий (какие? сложение можно объяснять на яблоках, придумать категорию на яблоках затруднительно; начала анализа - пределы/производные - в школе излагают полуформально, без яблок, но и без матлогики). Классическим путем для подбора задач было бы рассмотрение категории множеств и отображений, изучение свойств отображений на языке диаграмм, и перенос этого всего на другие категории. Но будет ли такой путь оптимальным для нематематиков? Сомневаюсь.
Комментарий
Да и каким видом диаграмм пользоваться - тоже вопрос. Вот есть новомодные струнные диаграммы, как раз про них откомментировал наш общий френд к очередному посту “ТК для программистов”. Проблема с ними такая - хотя они представляют язык, еще более подогнанный под определенные виды категорных манипуляций, но полное их понимание подразумевает умение выписать все те диаграммы, которые в том посте обычным способом нарисованы. Т.е. вроде бы нотация упрощает использование, но обучение ей - еще один порог.
Есть один эмпирический факт, по наблюдениям за программистами, что многие изучают некий фрагмент “ТК без аксиом равенства”. Причина простая - никаких аксиом равенства в языках вроде Хаскелля нет (это не proof assistant и не algebraic specification language). В результате получается некий содержательный фрагмент. С точки зрения классической ТК это нонсенс, поскольку основные понятия вроде коммутативности диаграммы касаются именно равенства морфизмов, и базовые определения, вроде изоморфизма объяктов, формулируются через равенство. Центральные конструкции, вроде универсально притягивающего/отталкивающего объекта используют равенство и то, что они дают определение объекта "с точностью до изоморфизма" тоже выразить нельзя. Но какой-то фрагмент они изучают и работают с ним... Можно ли начинать обучение с таких недокатегорий или их введение только запутает ученика? Не знаю.
300 головоломок -- это примерный объем школьного курса. Мне кажется, что это должен быть ещё школьный курс.
Как бы помягче выразиться. На фоне того, что школьную программу сокращают и под вопросом находится преподавание в школах таких классических областей, как начала анализа (я сам не знаю, нужны ли они; вроде бы, нужны были для инженеров, когда готовили их; сейчас массово готовят менеджеров), говорить про ТК в школе можно разве что в фантастическом ключе. А так - я обеими руками “за”, если что. Когда будут соответствующие технологии обучения.
Комментарий
Вот история обучения информатике в школе: Первый учебник вышел в 1985 под редакцией Ершова А.П.
Третий учебник (исторически):"учебник А.Г.Кушниренко, Г.В.Лебедева, Р.А.Свореня – наиболее близкий по идеологии к учебнику. В программе к данному курсу основной целью обучения информатике в общеобразовательной средней школе провозглашается развитие операционного (алгоритмического) мышления учащихся. Центральное понятие курса – алгоритмы, а основное содержание учебной деятельности – составление и анализ алгоритмов."
Комментарий
Группа "Аттик" сумела поставить образование по алгоритмике на мехмате МГУ, написали учебник для студентов мехмата. Ершов же пытался это дело до средней школы довести. Люди из группы Аттик продолжили вычленять "ядро" алгоритмики ("программистское мышление", о котором в те годы было модно говорить), чтобы написать качественный учебник и софт к нему. Учебник сочинялся буквально в моём присутствии, шли многочисленные эксперименты с преподаванием в самых разных классах, активно велись и эксперименты с учебным софтом, задействованы были толпы энтузиастов.
Ершов, кстати, хорошо понимал, что у программистов какое-то особенное мышление, и ему можно учить быстро, если это делать осознанно. "В заключение хочу вернуться к тезису об элитарности программирования и о его будущем. Моя апологетика на первый взгляд подчеркивала исключительный, особый характер программирования и его предельные требования к человеческим возможностям. Эта требовательность и образует тот самый вызов человеку, о котором я говорил вначале. Когда я был последний раз в Соединенных Штатах в 1970 г., на меня произвели большое впечатление новые идеи профессоров Массачусетского технологического института Марвина Минского и Самюэля Пейперта об обучении детей. Они выбросили в корзину ходячее представление, что дети учатся бессознательно методом подражания. Они доказывают, что человек чему-то научается только в том случае, если у него в голове складывается блок-схема действия, выделены подпрограммы и приложены информационные связи. Профессор Пейперт навсегда обратил меня в свою веру на примере жонглирования двумя мячами, когда, апеллируя к моим способностям программиста, он за десять минут научил меня тому, чего я сам не сделал бы и за несколько часов". (Это из http://www.softpanorama.org/Articles/ershov72.shtml -- ещё 1972 год!). Так что этот проект школьного образования по алгоритмике и длился сильно дольше, и начинался через Штаты в Новосибирске, и только потом-потом группа студентов, аспирантов и молодых преподавателей мехмата МГУ самоназвалась "Аттик" и заявила, что разработка учебного курса и учебного софта для школьной информатики является для неё приоритетной.
"Официальные разработчики-методисты" -- там, конечно, были всякие "официальные методисты" из системы образования, но они смотрели с изумлением на тех, кто реально работал... Они вообще ничего понять в этом не могли, советские "официальные методисты". Чаще всего они мешали: они пытались переключить обучение "компьютерам" на внешнюю видимость: как включить компьютер, как работать в редакторе текстов, как вложить листок бумаги в принтер...
Комментарий
Я обсуждал с А.Г.Кушниренко конкретно содержание вот этой книжки, как второй половины курса (опираясь на известное изречение "программа = алгоритм + данные", и сделав заявление, что структуры данных не менее кучерявы и с ними связано не меньше теории, чем с алгоритмами): http://ailev.livejournal.com/938647.html
Когда я говорю о "другой семантике", то отстраиваюсь от всяких "денотационных семантик" из алгоритмики, и имею ввиду понимание, близкое к "семантическому вебу" (который не люблю -- но из песни слов не выкинешь), лингвистике, семиотике. Кстати, "формальная прагматика" тоже вполне бывает с логикой, т.е. формулами (можете глянуть в Гугле formal pragmatics).