четверг, 27 сентября 2007 г.

Хороший материал, найденный в Wiki

Да, хорошее все-таки изобретение эта самая энциклопедия Wiki. Искал на днях кое-что и поисковик вывел на страничку
"счетчиковых" машин (перевод, конечно, еще тот, но в целом правильно отражает идею; более употребительно название "регистровые" машины).
По-моему, изучение программирования надо начинать не со стандартного Pascal/C/Basic etc., а с таких вот "примитивных" ассемблеров. После этого гораздо сдержанней начинаешь относиться к бантикам и рюшечкам (кажется, это сказал Э.Дейкстра) современных языков программирования; появляется осознание того, без скольких совершенно не нужных вещей (конструкций, метафор, парадигм, ...) можно легко обойтись.

пятница, 7 сентября 2007 г.

Небольшой (надеюсь) timeout

К сожалению, в связи с некоторыми обстоятельствами, вынужден на время прервать ведение блога. Тем не менее, как только представится случай, я намерен вернуться к нему. Тем более, есть кое-какой материал, который правда довольно сыроват для публикации. Но лучше не торопиться: всему свое время.
Удачи всем !!!

P.S. Или я чего-то не понимаю, но нигде не видно моего электронного адреса для переписки. Сейчас разбираться некогда, поэтому сделаю проще: пишите сюда

суббота, 1 сентября 2007 г.

Между тем...

По ходу дела вспомнил об одной теме в форуме Wasm.RU, где уже с полгода как возник (с моей подачи, каюсь) вопрос о минимальном наборе команд какого-либо процессора. Ответы неожиданно порадовали, поскольку участники форума вспомнили о стрелке Пирса, штрихе Шеффера и о "загадочных" для меня машинах Шенфилда. Слово "загадочные" я взял в кавычки не случайно: о машине Тьюринга не знает только ленивый, чуть меньше знакома машина Поста (последней, кстати, посвящена увлекательная книга В.А.Успенского, которая так и называется; вот тут свободно лежит ее электронная копия, рекомендую); существует и ряд других подходов. Но что есть "машина Шенфилда", для меня остается загадкой.
Разумеется, я сначала подумал, что эта машина каким-либо образом связана с известной книгой Джозефа Шенфилда (или, вероятнее, правильнее - Шёнфилда) "Математическая логика", изданной еще в 1975 г. в серии "Математическая логика и основания математики". Книга весьма интересная, хотя и сложная для первоначального знакомства с предметом. Но ничего о каких-бы то ни было машинах я в этой книге не нашел. Более того, ни в одной из известных книг по математической логике, побывавших в моих руках (а список этот, поверьте, весьма обширный) о машинах Шенфилда не сказано ни слова.
Один из участников вышеупомянутого обсуждения прислал мне свой университетский конспект лекций по математической логике и теории алгоритмов. Там, действительно, речь идет о машинах Шенфилда. Оказалось, что "машины Шенфилда" - не что иное, как давным давно известные регистровые машины: см., например, М.Минский "Вычисления и автоматы" и Дж.Булос и Р.Джеффри "Вычислимость и логика". Правда, ни в первой, ни во второй книге о машинах Шенфилда - ни слова.
Таким образом, я никак не могу победить "лингвистическую" загадку: причем тут Шенфилд. Понимаю, что это пустяк, не более чем безделица, но интересно все-таки.

среда, 29 августа 2007 г.

"Ты помнишь, как все начиналось...?"

Итак, приступаю (и, по старой доброй национальной традиции, не прямо к делу, а несколько издалека)...
Почти всякий курс математической логики начинается стандартно: с исчисления высказываний. Вводятся логические операции (иначе, связки): конъюнкция, дизъюнкция, отрицание, импликация и эквивалентность; также постулируется наличие двух истинностных значения: истина (true) и ложь (false).
Далее, приводятся таблицы истинности логических связок и изучаются способы определения истинности логических формул путем построения таблиц. Учащемуся предлагается изучить два-три десятка логических формул (иногда и больше), которые при любых значениях истинности составляющих их частей, всегда имеют значение true и показывается, как эти формулы можно применять. Потом наступает пора исчисления предикатов и прочих технических вещей, которые не слишком сложны, но порой утомительны. Понятно, что порядок и способ изложения тех или иных понятий может, конечно, разниться, но общая тенденция примерно такова.
Когда учащийся окончательно притомится и начнет терять надежду выпутаться из бесконечных таблиц, логических формул, когда он почти разуверится, что все это может быть не только полезным, но и интересным, это самое интересное и наступает: теория множеств (причем, уровень изложения может быть от элементарного - на уровне понятий, до весьма продвинутого), формальная арифметика и теория доказательств. Обычно, тут излагаются действительно интересные и глубокие вещи: теоремы Геделя, обсуждаются парадоксы и т.д.
Если остается время и силы учащегося окончательно не иссякли, то иногда дается введение в теорию рекурсивных функций и теорию вычислимости.
Тема настоящего блога как раз последнее - вопросы вычислимости. Мы не будем глубоко и тщательно касаться теории (для этого есть много хороших книг, написанных выдающимися специалистами; упомянем имена Д.Гильберта, С.Клини, А.Тарского и других), а в основном займемся практикой. Разумеется, без базовых понятий в той же математической логике не обойтись. Тем, кто запамятовал, что это такое лучше обратиться к какому-нибудь стандартному учебнику, скажем, книгам Мендельсона, Колмогорова, Клини или Новикова (одним словом, подойдет любой университетский учебник логики для математических факультетов, какой читетель сможет найти).
В качестве более живого и увлекательного (но, отнюдь далеко не простого) чтения, можно порекомендовать великолепные книги американского логика и известного популяризатора Р.Смаллиана: поищите, не пожалеете.
Вот, пожалуй, и все, что я хотел сегодня поведать. До встречи и удачи всем !!!

понедельник, 27 августа 2007 г.

Вместо введения

Здравствуйте, уважаемый посетитель !
Честно говоря, это мой первый опыт блоговедения. Не обессудьте, если что не так - постараюсь быть внимательным к содержательным замечаниям и конструктивной критике и по-возможности быстро исправлять ляпы и устранять ошибки. Надеюсь, что блог окажется удачным, неутомительным, продуктивным и, не в последнюю очередь, занимательным. Да-да, еще и занимательным, поскольку вокруг тем, которые я хочу предложить Вашему вниманию, незаслуженно сложился ореол избыточной абстрактности, оторванности от жизни и, как следствие, едва ли не бесполезности.
Чтобы не возвращаться к этому, позвольте сразу представиться: меня зовут Алексеем. Область интересов - математическая логика, основания математики и программирование. Если чуть более конкретно (но без излишних и утомительных подробностей, неуместных в этом "введении") это вопросы вычислимости и всякие "штучки", вроде машин Тьюринга, Поста, рекурсивных функций и тому подобные вопросы.
Причем тут программирование ? Честно говоря, почти и не причем. Разве что, во-первых, это все-таки "близкородственные" направления (с той существенной разницей, что логика, основания математики и вычислимость направления больше теоретические, а программирование - преимущественно прикладное) и, во-вторых, надо же как-то зарабатывать на хлеб насущный и если уж приходится заниматься программированием, то, по крайней мере, не испытывая известного омерзения от занятий этим делом. Это, конечно, шутка!
Затевая этот блог мне меньше всего хочется, чтобы он превратился в "помойку", в какую рано или поздно превращаются почти все форумы сходного направления (особенно это касается чисто программистских форумов). Религиозные споры (Windows против Linux, C++ против Java и т.п.) надоели и опротивели. Прежде чем дать автору вопроса содержательный ответ, его (т.е. автора) почти непременно оскорбят, отошлют к RTFM, усомнятся в умственных способностях, сексуальной ориентации и профессиональной пригодности. И даже после всего этого отнюдь не факт, что ответ будет получен. Надеюсь, читатели и участники обсуждений в этом блоге (если он состоится и к чему я постараюсь приложить все силы) обладают достаточным культурным уровнем и не опустятся до описанной выше мерзости.
Засим, позвольте на время откланяться. Чтобы не оставлять в неопределенности потенциальных собеседников блога, я хочу обозначить следующую тему, которая, на мой взгляд, лежит на стыке теории и практики - минимизация конструкций языков программирования.
Спасибо, что прочли это несколько затянувшееся введение и до встречи !!! Удачи всем