среда, 31 марта 2010 г.

Горячие клавиши Delphi


Человек, который не знает свой инструмент, что мартышка с гранатой.





ШоткатОписаниеВерсия IDE
EscapeНажате Escape во время перемещения контрола делает объектом перемещения родителя контролаDelphi 2 и выше
Shift + ClickAfter selecting control in form designer, click on it with Shift again to select top most parent FormDelphi 5  и выше
TabНа форме перемещает фокус по контролам. В Инспекторе Объектов переключает испектор в режим инктрементного поиска по названиям совйствDelphi 5  и выше
Ctrl + JОткрывает список шаблонов кодаDelphi 5  и выше
Ctrl + TУдаляет текст с позиции курсора до конца словаDelphi 5  и выше
Ctrl + EИнкрементный поискDelphi 5  и выше
Ctrl + YУдаляет текущую строкуDelphi 5  и выше
Ctrl + BВ редакторе вызывает окно буфера. The buffer window shows a list of all different tabs.Delphi 2007  и выше
Ctrl + Shift + GГенерирует новый GUID в позиции курсораDelphi 5  и выше
Ctrl + Shift + IСдвиг выделенного блока вправоDelphi 5  и выше
Ctrl + Shift + UСдвиг выделенного блока влевоDelphi 5  и выше
Ctrl + K + IСдвиг выделенного блока вправоDelphi 5  и выше
Ctrl + K + UСдвиг выделенного блока влевоDelphi 5  и выше
Ctrl + Shift + JВызов SyncEditBorland Developer Studio 2006
Ctrl + Shift + VАвтоматически объявить переменную в позиции курсораBorland Developer Studio 2006
Ctrl + Shift + YУдалить до конца строкиDelphi 5  и выше
Alt + [Соответствующая скобка впередDelphi 5  и выше
Alt + ]Соответствующая скобка назадDelphi 5  и выше
Alt + RightArrowBrowse forward (hotlink history)Delphi 6  и выше
Alt + LeftArrowBrowse backward (hotlink history)Delphi 6  и выше
Alt + UpArrowBrowse to symbol under editor cursor (invoke a hotlink and add it to the hotlink history)Borland Developer Studio 2006
F4Запустить программу до остановки в позиции курсораDelphi 2  и выше
F5Пставить/удалить точку остановаDelphi 2  и выше
F7Трассировка с входом в вызываемые процедуры и функцииDelphi 2 и выше
Shift - F7Трассировка заходя в каждую процедуру и перескакивание в каждое возникающее событиеDelphi 5 и выше
F8Трассировка без входа в вызываемые процедуры и функцииDelphi 2 и выше
Shift - F8Run until returnDelphi 5 и выше
F9Запустить программу в режиме отладкиDelphi 2 и выше
Ctrl + F2Прервать выполнение программыDelphi 5 и выше
Ctrl + F7Просмотр значений переменных и их изменениеDelphi 2005 и выше
Ctrl + F5Добавить в список переменных для просмотраDelphi 5 и выше
Ctrl + F12Список модулейDelphi 2 и выше
Alt + GПерейти к строке по номеруDelphi 2 и выше
Ctrl + O + GПерейти к строке по номеруDelphi 5 и выше
Ctrl + Shift + RСтарт\стоп записи макроDelphi 2 и выше
Ctrl + Shift + PЗапустить макроDelphi 2 и выше
Ctrl + SpacebarПоказать список методов, свойств объекта (после точки)Delphi 5 и выше
Ctrl + Shift + SpacebarПоказать список параметров функцииDelphi 5 и выше
Ctrl + EnterОткрыть файл с именем слова на котором курсор стоитDelphi 2 и выше
Ctrl + Shift + EnterНайти все ссылкиDelphi 2005 и выше
Ctrl + Shift + CЗакончить метод (если он описан – создать шаблон для реализации,если есть реализация – объявить метод)Delphi 5 и выше
Ctrl + Shift + UpArrowПереход от объявления процедуры к ее реализацииDelphi 5 и выше
Ctrl + Shift + DownArrowПереход от объявления процедуры к ее реализацииDelphi 5 и выше
Ctrl + Shift + 1 - 9Поставить\снять закладкуDelphi 2006 и выше
Ctrl + 1 - 9Перйти к закладкеDelphi 2006 и выше
Ctrl + Alt + F12Открыть список открытых файлов в правом верхнем углуBorland Developer Studio 2006
Ctrl + Alt + Mouse WheelПереход к предыдущей или следующей реализации метода в лексикографическом порядке в текущем модуле, либо в классе, который был ограничен Ctrl + Q + LBorland Developer Studio 2006
Ctrl + Alt + UpArrowПереход к предыдущей реализации метода в лексикографическом порядке в текущем модуле, либо в классе, который был ограничен Ctrl + Q + LBorland Developer Studio 2006
Ctrl + Alt + DownArrowПереход к следующей реализации метода в лексикографическом порядке в текущем модуле, либо в классе, который был ограничен Ctrl + Q + LBorland Developer Studio 2006
Ctrl + Alt + HomeПереход к лексически первой реализации метода в текущем модуле, либо в классе, который был ограничен Ctrl + Q + LBorland Developer Studio 2006
Ctrl + Alt + EndПереход к лексически последней реализации метода в текущем модуле, либо в классе, который был ограничен Ctrl + Q + LBorland Developer Studio 2006
Ctrl + Alt + PАктивировать палитру компонентов в режиме фильтра (наберите название и нажмите Enter чтобы бросить на форму)Delphi 2005 и выше
Ctrl + Alt + AВставить текущюю дату в позицию курсораsince BCB 4.0
Ctrl + /Закоментировать\раскоментировать, Ctrl + # для нордических (и возможно для других интернациональных) клавиатурDelphi 2005 и выше
Ctrl + Shift + TДобавить в список TodoDelphi 2005 и выше
Alt + F12Переключение отображения формы между тектовым и дезигн режимамиDelphi 5 и выше
Alt + F11Диалог модулейDelphi 5 и выше
Ctrl + F11Диалог открытия проектаDelphi 2005 и выше
Ctrl + Alt + F11Окно управления проектом Delphi 2005 и выше
F11Инспектор объектовDelphi 5 и выше
F12Переключение между редактором и дизайнеромDelphi 5 и выше
Alt + 0Список оконDelphi 2005 и выше
Shift + Alt + F11Окно структурыDelphi 2005 и выше
Ctrl + Shift + BВызывает непонятное окно с название "Buffer list"Delphi 5
Ctrl + Alt + BОкно точек остановаDelphi 5 и выше
Ctrl + Alt + SОкно стека вызововDelphi 5 и выше
Ctrl + Alt + WОкно просмотра трассируемых переменныхDelphi 5 и выше
Ctrl + Alt + LОкно локальных переменныDelphi 5 и выше
Ctrl + Alt + TОкно нитей (Threads)Delphi 7 и выше
Ctrl + Alt + FОкно FPUDelphi 2005(removed from Delphi 2006)
Ctrl + Alt + CОкно CPUDelphi 5 и выше
Ctrl + Alt + VОкно событий (Event)Delphi 5 и выше
Ctrl + Alt + MОкно модулейDelphi 2005 и выше
Shift + F12Окно формDelphi 5 и выше
Ctrl + Shift + AInvoke Add to uses clause(Find unit in Delphi 2006) window (Refactoring)Delphi 2005 и выше
Ctrl + Shift + F11Окно настроек проектаDelphi 2005 и выше
Ctrl + F9Компилировать проектDelphi 5 и выше
Shift + F9Собрать проектDelphi 5 и выше
Shift + F11Окно добавления в проектDelphi 5 и выше
Shift + Ctrl + F9Запустить без отладкиDelphi 2005 и выше
Ctrl + FПоискDelphi 3 и выше
Shift + Ctrl + FПоиск в файлахDelphi 3 и выше
Alt + F7/F8Предыдущий/следующий результат (для поиска в файлах и ошибок сборки)Delphi 7 и выше
Ctrl+K+EПривести выделенный текст к нижнему регистру и убрать выделениеDelphi 5 и выше
Ctrl+K+FПривести выделенный текст к верхнему регистру и убрать выделениеDelphi 5 и выше
Ctrl+K+OПривести выделенный текст к нижнему региструDelphi 5 и выше
Ctrl+K+NПривести выделенный текст к верхнему региструDelphi 5 и выше
Ctrl+O+UПереключить регистрDelphi 5 и выше
Ctrl+Shift+K+OВключить\выключить сворачивание кодаDelphi 2006 и выше
Ctrl+Shift+K+AСворачивание кода: Развернуть все блоки кодаDelphi 2006 и выше
Ctrl+Shift+K+EСворачивание кода: Свернуть все блоки кодаDelphi 2006 и выше
Ctrl+Shift+K+UСворачивание кода: Развернуть текущий блок кодаDelphi 2006 и выше
Ctrl+Shift+K+TСворачивание кода: Переключить текущий блок (expand & collapse)
Ctrl+Shift+K+RСворачивание кода: Свернуть все регионы {$region 'comment'}..{$endregion}Delphi 2006 и выше
Ctrl+Shift+K+PСворачивание кода: Свернуть вложенные процедуры
Ctrl+Shift+K+MСворачивание кода: Свернуть все методы
Ctrl+Shift+K+CСворачивание кода: Свернуть все классы
Ctrl+Shift+K+GСворачивание кода: Свернуть до главных групп [Interface/Implementation]Delphi 2006 и выше
Ctrl+Shift+K+NСворачивание кода: Свернуть Namespace/UnitDelphi 2006 и выше
Ctrl+TabПереключиться на следующий открытый файл в редактореDelphi 2006 и выше
Ctrl+Shift+TabПереключиться на передыдущий открытый файл в редактореDelphi 2006 и выше
Ctrl + K + PДиалог печати выделенногоDelphi 5 и выше
Ctrl + K + WЗаписать блок в файл (выделенный текст)Delphi 5 и выше
Ctrl + K + RПрочитать блок из файла и вставить текст в позици курсораDelphi 5 и выше
Ctrl + K + CCopies selected text at the end of the selectionDelphi 5 и выше
Ctrl + K + TВыелить слово в позиции курсораDelphi 5 и выше
Ctrl + O + LВыделить текущую  строкуDelphi 5 и выше
Ctrl + Q + LToggles between limiting the Ctrl+Alt navigation shortcuts to the current class, or limiting it to the current unitBorland Developer Studio 2006
Ctrl + Q + WПерейти на следующий елемен в окне сообщенийDelphi 5 и выше
Ctrl + F6Переключиться между исходником (.cpp) и заголовком (.h)BDS 2006 и выше, C++ Builder personality
Оригинал тут

Тестировал на Delphi 2007. Некоторые вещи не работали. Некотрые не понял так и оставил в английском варианте. Если вы найдете ошибки, неточности и т.п. пишите. 
Доделаем до конца.

Интервью с конструктором троичной ЭВМ «Сетунь»


Не знаю, насколько интересно читать мои статьи, посвященные истории становления компьютерной отрасли, одно я знаю точно: писать их во сто крат интереснее. В процессе длительных поисков исходной информации для очередной статьи и исследований всегда находится что-то такое, что заставляет воскликнуть: «Ух ты!», но, к сожалению, далеко не все может уместиться в журнале. После статьи о Льюисе Кэрролле и трехзначной логике я стал собирать материалы о реально созданной в СССР троичной ЭВМ «Сетунь», главным конструктором которой был Николай Петрович Брусенцов. Случайно мне попался его номер телефона. Без особой надежды -шутка сказать, человек 1925 года рождения, прошел войну — набрал номер. К моему удивлению, трубку взял сам Брусенцов. Узнав, что я звоню по поручению журнала Upgrade, он сказал: «А, как же, Upgrade, знаю. Там еще статья была про троичную логику какого-то Румянцева». Короче, познакомились, договорились о встрече. И вот я иду по коридору здания факультета вычислительной математики и кибернетики МГУ. Надо сказать, что мне нередко приходится бывать в разных ВУЗах, и самое мрачное впечатление на меня производит факультет ракетостроения МАИ -такого ужасающего разгрома я нигде не видел. В МГУ у меня тоже вечно как-то сжимается сердце. Повсюду следы того, что когда-то это был один из главных храмов мощного государства... Здесь что-то ремонтируют, укладывают полы — и то слава Богу. Подхожу к двери с надписью «Лаборатория ЭВМ» и лихорадочно вспоминаю, что мне, собственно, известно о человеке, к которому иду, и о его детище.

Год рождения — 1925, на войне с 1943 года, служил радистом в отделении разведки. В 1948 году поступил в Московский энергетический институт. Во второй половине 50-х годов в МГУ создал троичную ЭВМ «Сетунь», аналогов которой не существует и поныне. Всего было выпущено 50 таких машин. Элементарная единица информации — трит, страничная двухуровневая организация памяти, пороговая реализация трехзначной логики на электромагнитных элементах и все в таком духе. Открываю дверь, вхожу и... удивляюсь: никаких компьютеров. За столом годов, наверное, 60-х сидит скоромно одетый человек — простая рубашка и джинсы (компьютерная традиция, однако). Честно говоря, у меня были подготовлены разные дурацкие вопросы, типа того, какую ОС он использует и какой процессор в его компьютере. Брусенцов сразу задал другую тональность разговора, отчего мне с моими пигмейскими домашними заготовками стало немного неловко. И все же больше всего меня интересовало, почему он решил строить троичную машину, когда все вокруг делали двоичные?

Upgrade: Так, собственно, почему троичная машина?

Николай Брусенцов: Тогда задача была очень простая: мы должны были для МГУ получить машину М-2, которую сделали в лаборатории Брука. Но получилась неувязочка. На выборах академиков Сергей Львович Соболев -наш руководитель — проголосовал не за Брука, а за Лебедева. Брук обиделся и машину не дал. Я пришел к Соболеву и спросил: чем же я теперь буду заниматься? Он мне отвечает: «А давайте свою машину сделаем». Это было в конце 1955 года.

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

Тогда в МГУ как раз собирались получать большую машину «Стрела», создали вычислительный центр. Сергей Львович предусмотрел в нем отдел электроники — мой отдел. И мы должны были создать машину с нуля. Условия такие: машина должна быть небольшой, надежной, простой в освоении и использовании — короче, машина широкого назначения, для учебных заведений, лабораторий и т. п. Когда я выяснил, что можно воспользоваться троичной системой счисления, я сказал об этом Сергею Львовичу. Он полностью все одобрил. Уверен, что другой на его месте сказал бы: «Да ты что, все делают двоичные, а ты куда?»


UP: Он фактически дал полный карт-бланш?

Н. Б.: Да. В нашей лаборатории никогда не работало более двух десятков человек, считая девочек, которые мотали сердечники. А в начале у меня вообще было три-четыре сотрудника. Я должен сказать: для того, чтобы разрабатывать компьютеры, совершенно не нужны тысячные институты. Мы работали в компании с нашим программистским отделом, который возглавлял Е. А. Жоголев. То, что затем получило название «архитектура машины», создавалось нами вместе. Он предлагал программистские идеи, а я думал, насколько их можно реализовать на аппаратном уровне. В конечном итоге мы создали всего 24 машинных команды. Многие до сих пор в это не верят. И в дальнейшем архитектура «Сетуни» не подверглась никаким изменениям. Все серийные машины были архитектурно точно такими же, ну, может, слегка адаптированы под производство. Начав в 1956 году, мы уже через два с половиной года, в 1958 году, сделали образец, который работал. И вот тут-то началось нечто несуразное.

Осенью 1959 года нас пригласили на Коллегию Государственного Комитета Радиоэлектроники — ГКРЭ. И там мы узнали, что наша машина не нужна. И Госплан, и ВСНХ заняли отрицательную позицию. На Коллегии нас записали в черный список закрываемых разработок. Мы никогда никаких дополнительных денег на создание машины ни копейки не получали. Мы работали только за зарплату здесь, в МГУ. Использовали оборудование, списываемое заводами при снятии изделий с производства. Тем не менее, ради экономии средств нас решили закрыть.


UP: Но какое-то объяснение этому должно быть?

Н. Б.: Соболев спросил: «А вы хотя бы видели эту машину, ведь она уже существует?» Директор СКБ-245 В. В. Александров ответил: «Нам не надо ни видеть, ни знать — должна быть авторитетная бумага с печатями и подписями». После Коллегии Сергей Львович пошел в ЦК КПСС. Уже вечером к нам приехал сотрудник отдела ЦК Ф. К. Кочетов и привез с собой М. К. Сулима — начальника восьмого управления ГКРЭ. «Сетунь» нормально работала и производила необыкновенно хорошее впечатление. Обычно ведь как было: на выставке стоят машины, а сзади люди в белых халатах что-то там налаживают. У нас все работало как часы. Ну, понятно, после этого закрывать нас не стали, ведь машина уже сделана. Было принято решение провести ее межведомственные испытания. Испытания были проведены в апреле 1960 г. На них «Сетунь» показала 95% полезного времени. А в то время, если машина показывала 60%, это считалось очень хорошим результатом.


UP: А что значит термин «полезное время»?

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

После этих испытаний было принято постановление Совмина об организации серийного производства. Мы не очень удачно выбрали Казанский завод, лучше бы Астраханский. Астраханцы потом взялись делать элементы к этой машине и делали их превосходно. Элемент стоил 3,5 руб. Конечно, никаких высоких технологий там не было. ЭВМ «Сетунь» выпускали по 10-12 штук в год, то есть вроде бы выполняется постановление Совмина СССР, а на самом деле -нет. Притом, что было очень много заявок не только внутри страны, но и из-за рубежа. Во-первых, разумеется, из соцстран, но также и из таких стран, как США и Англия, где разработчикам было очень интересно посмотреть, что это за троичная штука.


UP: Американский аналог «Сетуни» — это PDP-8, на которой тинэйджер Билл Гейтс составлял свои первые программы?

Н. Б.: Да. Кстати, интересно сравнить «Сетунь» и PDP-8. Процессор PDP-8 — восьмибитный. У «Сетуни» процессор в пересчете на биты был 30-битным. PDP-8 стоила 20 тысяч долларов без всякой периферии, только один процессорный блок. Считалось, что это рекордно низкая цена.
Первый опытный эк­земпляр машины "Сетунь". При испы­таних она показала 95% полезного вре­мени, в то время как 60% уже считались хорошим результа­том.

«Сетунь» стоила 27,5 тысяч рублей со всей периферией. Чехи считали, что могли хорошо продавать «Сетунь» в соответствии с рыночными ценами и получать порядка полумиллиона долларов прибыли с каждой машины. По их приглашению я ездил в Чехословакию, мне показали завод, который планировалось использовать для производства машины «Сетунь», — «Зброевка Яна Швермы». Этот завод, кстати, во время войны делал самые лучшие пушки для немецкой армии, вроде нашей ЗИС-3. Завод меня просто восхитил. Они уже приготовили для «Сетуни» магнитные барабаны, печатающее устройство, устройство ввода. В общем, все было готово для производства «Сетуни». И они мне задают вопрос: «Ну, когда же, наконец, мы получим документацию? Нам обещали еще в декабре, а ее до сих пор нет». А я молиться готов был на такой завод — настоящая высокая культура производства.
ЭВМ "Сетунь-70" была стековой машиной, вроде отечественных "Эльбрусов", но имела два стека - команд и данных..
Когда я вернулся в СССР, меня вызвал референт Косыгина и попросил передать чешским товарищам, как тогда говорилось, что документацию на «Сетунь» они получат сразу после освоения крупносерийного производства этой машины в Советском Союзе. Но какое к черту крупносерийное производство, когда принимались все возможные меры, чтобы заморозить «Сетунь». Понятно, что тут не обошлось без ГКРЭ. Тот же самый Сулим был заместителем главного конструктора М-20. А с М-20 в КБ провозились 2,5 года, прежде чем передать ее на завод. Для «Сетуни» никакого КБ не дали — завод указан, езжайте и выпускайте. Хорошо В. М. Глушков предложил свое КБ за символическую плату в сто тысяч рублей, чтобы выпустить конструкторскую документацию.


UP: Сто тысяч рублей — это символическая плата?

Н. Б.: Ну конечно! Те 2,5 года, которые в КБ разрабатывали М-20, обошлись в десятки миллионов рублей, Что такое КБ того времени? Это несколько сот человек с высокой оплатой по первой категории и т. д.

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


UP: А «Сетунь-70»?

Н. Б.: К 100-летию со дня рождения Ленина все должны были делать всякие производственные подарки. Разумеется, и мы взяли обязательство к этой дате сделать «Сетунь-70». Но это уже совсем другая машина. Это была стековая машина, вроде наших «Эльбрусов». Но у «Эльбруса» был всего один стек — стек операндов. У PDP-11 также был всего один стек — процедурный. А «Сетунь-70» имела два стека — команд и операндов. Надо сказать, что эти стеки мы сделали независимо от PDP-11, которая появилась позднее. Когда Дейкстра выступил с идеей структурного программирования, мы увидели, что сделали машину как раз для реализации его идеи. Программирование на «Сетунь-70» было даже не структурированное, а структурирующее. Программы получались легко читаемыми и осваиваемыми, легко модифицированными. Главное, что программы не подвергались отладке, а делалась так называемая контрольная сборка. После того как программу сверху вниз написали, ее проходили снизу вверх. В хороших КБ всегда так делается — типичный конструкторский прием. После этого программа оказывается, как правило, безошибочной. Позднее «Сетунь-70» была эмулирована на двоичных машинах в форме диалоговой системы структурного программирования ДССП.


UP: И все-таки, Николай Петрович, кому мешала «Сетунь»?

Н. Б.: Людям с косным мышлением, которые, тем не менее, занимали высокие руководящие посты. Как показала практика, «Сетунь» была работоспособна без всякого сервиса. Те, кто душил ЭВМ «Сетунь», раскидали ее по всей стране.


UP: А смысл?

Н. Б.: Видимо, для того, чтобы удаленность от сервисного центра и разброс климатических зон максимально выявили конструктивные недочеты. Но вся штука в том, что их практически не было. «Сетунь» была очень простой машиной. Я, как инженер, считаю, что простота вещи — это главное ее качество. В природе все то, что удалось ей выработать в простой форме, оказывается самым надежным, самым устойчивым. География обитания «Сетуни»: Якутск, Иркутск, Красноярск, Душанбе, Ашхабад, Махачкала, Калининград и т. д. Причем часто она попадала к людям, которые впервые видели цифровую технику. И несмотря на это, практически всюду машина нашла существенное применение. В Якутске «Сетунь» была в астрофизическом институте. У них была какая-то сложная задача, которую они в течение двух лет не могли поставить на большой машине ^Урал-2». Потом кто-то сказал:

«Давайте попробуем на «Сетуни». Все решили, что это шутка. Однако через полтора месяца задача была решена. Дело в том, что «Сетунь» была естественной машиной. Там нет этого идиотского дополнительного кода для отрицательных чисел. И положительные, и отрицательные числа задаются естественно. Потом всего 24 команды. Освоить такую машину и программировать в машинном коде было ничуть не сложнее, чем, скажем, осваивать «Алгол» или «Фортран».


UP: Но программист фактически должен был работать в пространстве трехзначной логики?

Н. Б.: А что значит трехзначная логика? Знак числа — это какая функция? Трехзначная! Число может быть положительным, отрицательным, а может быть равным нулю. Это совершенно естественно, и это понятней, чем то, что мы имеем в двоичных машинах, когда, чтобы разобраться, какого знака результат, нужно сделать два шага. Но, строго говоря, в самой «Сетуни» логическая часть была не особенно развита. Правда, та трехзначная логика, которая была в «Сетуни», с избытком покрывала то, что было в двоичных машинах. Но аристотелевских суждений там, конечно, не было. Мы в то время собственно логикой не занимались. Я уже после создания «Сетуни» стал понимать, что логику как таковую не знаю, стал читать книги. Оказалось, что у меня были предшественники. И у них, кстати, путь тоже не был устлан розами. Еще в XIII веке был такой Раймунд Луллий (1235-1315 гг.). Он создал логическую машину, правда, на бумаге, в виде круговых диаграмм с секторами. Эта машина была троичной. Этого Луллия забили камнями. Был Вильям Оккам, он тоже предложил трехзначную логику, значительно более реальную, чем та, которую изобрел Ян Лукасевич в 1920 году. Далее всех продвинулся Льюис Кэрролл. Он нигде не говорит, что у него трехзначная логика. Но диаграммы Кэрролла из его «Символической логики», кроме красных и белых фишек, допускают еще пустые клетки. Это и есть трехзначная логика. Кэрролл на Аристотеля не ссылается и свою силлогистику создал как реализацию логики естественного языка. Поразительно, что Гарднер — популяризатор информатики — охарактеризовал Кэрролла посредственным логиком и посредственным математиком. И это притом, что Кэрролл в сущности создал систему — у него были очень незначительные неувязки, — решающую задачу, над которой бились логики последних полутора столетий.


UP: Николай Петрович, после статьи в журнале Upgrade я получал письма, в которых читатели интересовались, как именно удалось реализовать троичный компьютер? Было даже письмо, где автор выразил сомнение в том, что такой компьютер когда-нибудь существовал.

Н. Б.: Буквально на днях я получил письмо из США, где также спрашивают, как удалось реализовать троичную логику? К нам постоянно приходят по e-mail письма с запросами. Надо сказать, что наибольший интерес проявляют такие страны, как Бангладеш, Пакистан, Индия. У меня такое ощущение, что там сейчас главный центр компьютерного развития. Но на сегодня все попытки повторить троичную машину не удаются. Причина не технологическая — все-таки по сравнению с тем периодом технологии ушли далеко вперед. Дело в другом: людям, оболваненным двузначной логикой, войти в трехзначную логику не дано. По традиции считается, что та логика, которую мы сегодня исповедуем, — аристотелевская логика. Это совершенно неверно. Дело в том, что аристотелевская логика трехзначная. Естественно, что трехзначная логика в двузначную вписаться не может. Конечно, можно симулировать: парами битов задать триты, но не в этом дело.

Та логика, которую сегодня называют математической, основана на нелепости. Допустил ее Гильберт. В его совместной с Аккерманом книге «Основы теоретической логики» сказано так: «Мы отклоняемся от Аристотеля в истолковании суждения «Все А суть В». По Аристотелю, это суждение может быть истинным, то есть выполняется только лишь в случае, когда существуют какие-то А. Мы считаем это нецелесообразным». Что в результате получилось? В результате получилось то, что выполняется «Все А суть В» и в то же время не выполняется «Некоторые А суть В». Это нелепость! Вместо аристотелевского следования, которое во всех естественных языках выражается словами «Все А суть В», — и Аристотель очень точно это в своей системе воспроизвел, — они подсунули так называемую материальную импликацию. Дело в том, что суждение «Все А суть В» у Аристотеля трехзначно, в двузначной логике оно не выразимо. В результате возникли так называемые парадоксы материальной импликации, с которыми вот уже сто лет как логики пытаются справиться.

В 1918 году Кэрролл предложил строгую импликацию, потом Аккерман разработал исчисление сильной импликации, была предложена релевантная импликация, и, тем не менее, логика остается без естественного содержательного следования. То есть то, что называется следованием логике, не соответствует тому, как мы это понимаем. Обычно говорят: не соответствует нашей интуиции. Но это очень мягко сказано. На самом деле оно не соответствует не интуиции, а тому, как вещи связаны между собой в том мире, в котором мы живем.

Аристотель не признавал закона исключенного третьего. Даже речи о нем не было. Гильберт считал, что аристотелевское понимание суждения «Все А суть В» не нужно принимать, потому что это неприемлемо с точки зрения математических применений. А абсурд приемлем? Вся история говорит о том, что этот абсурд существует.

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

Единственное адекватное применение двузначной логики -двоичные цифровые схемы. Но это особый мир двоичных компьютеров, и только в нем эти правила работают, не требуя понимания. Я поинтересовался у студентов: что такое конъюнкция? А мне в ответ: да это такая табличка, в которой единичка и три нуля... Ну, а по смыслу что это такое? Переведите на русский язык латинское слово «конъюнкция». Никто не может. То есть эту логику усваивают чисто формально, в точном соответствии с ее названием — формальная логика. При синтезе схем возможности ограничены. Минимизировать произвольную схему наука не в состоянии. В трехзначной логике минимизация осуществляется, а в двузначной универсального алгоритма нет.

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

Сейчас двузначную логику в школу ввести удалось под названием «информатика». Я должен сказать, что после этого школа уже не будет воспитывать таких людей, как наши ученые прошлого века. Почему в то время было так много творческих ученых? Где-то в 1936 году в образовании был примерно такой же бедлам, как наступил сейчас в России. Потом, по-видимому, сам Сталин обратил на это внимание. Кстати, Сталин был поразительно трудолюбивым в плане обучения человеком. Сохранилось его письмо к жене, в котором он, находясь на отдыхе, просит ее прислать ему учебник по электротехнике. Он понимал, что все нужно знать «в натуре», а не в виде каких-то теоретических схем. Тогда в школу были возвращены учебники Киселева по алгебре и геометрии. Киселевские учебники — это евклидова математика. А Евклид — это математик с философией Аристотеля, и, судя по всему, он Аристотеля понимал верно.

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


UP: Николай Петрович, вы создали уникальный компьютер, который, возможно, опередил время. Но всю свою жизнь вынуждены были преодолевать невероятное сопротивление, косность бюрократической машины и видеть, как ваше детище уничтожается. С другой стороны, скажем, в США, тот же Стив Джобе, который в гараже сделал свою первую и довольно убогую персоналку, сегодня мультимиллионер. По-человечески вам не обидно?

Н. Б.: Да нет. Я понимаю, что, увы, так устроено человечество. И, в общем, оно обречено, если ничего не изменится. К сожалению, все попытки как-то исправить ситуацию, сделать ее более соответствующей естественному порядку вещей проваливаются. Давайте посмотрим: действительно ли мы так много имеем от того, что компьютеризировали этот мир. Теперь компьютеры везде. Причем система устроена таким образом, что каждые три-четыре года нужно покупать новый компьютер и новый софт.


UP:...делать upgrade.

Н. Б.: Да, делать upgrade. Но почему? Да потому, что в самом начале заложены неверные принципы. Если вы в основу заложите простые, естественные принципы, то и все развитие происходит просто, логично, естественно.

Я не обижен судьбой. Не в деньгах счастье, тем более не в миллиардах. Когда все сведено к деньгам, жизнь людей утрачивает смысл, становится абсурдом. На войне не могло быть радости от того, что грохнувший вблизи разрыв сразил не тебя, а находящегося рядом твоего товарища. Радостью, счастьем было наше духовное единство. То труднейшее, отмеченное беспросветностью утрат и страданий время озарено вместе с тем не ярким, но вечным светом бескорыстного согласия людей. «Но только крепче мы дружили под перекрестным артогнем». Похоже, что такое согласие возникает у людей, объединенных общностью цели, увлеченных реализацией рациональной идеи.

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

История — маятник. Сегодня мы находимся, возможно, в самой нижней точке его траектории. Но очень хочется верить, что время брусенцовых в России еще наступит. Как было сказано в одной старой книге: «Достаточно Энергетического центра, чтобы началась Эра Чудес».
Промыщленный образец ЭВМ «Сетунь», ВДНХ, 1961 г. В начвле 70-х годов исправную и загруженную задачами машину выкинули на свалку.

UPGRADE #33 (175) август 2004
Скопипащено отсюда


четверг, 4 марта 2010 г.

MessageBox в Qt

Подготовка к работе

За работу с всплывающими сообщениями в Qt отвечает модуль QMessageBox, поэтому необходимо подключить его в исходнике:

#include<QMessageBox>

Простой Message Box без обработки вариантов ответа

Создание простого Message Box без обработки вариантов ответа (по сути это просто всплывающее окно, убирается по нажатию на центр джойстика).

#include<QtGui/QApplication>
#include<QMessageBox>
int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  QMessageBox msgBox;
  msgBox.setText("Hello Here");
  msgBox.exec();
  app.quit();
  return 1;
}

"Умный" Message Box с обработкой вариантов ответа

Для интереса добавим появление этого бокса по нажатию на кнопку: Создаем на форме кнопку, жмем на ней правой кнопкой мыши - Перейти к слоту. Выбираем clicked() и вставляем туда следующий код:

QMessageBox msgBox;
// Заголовок сообщения
msgBox.setText("Testing.."); 
// Тип иконки сообщения
msgBox.setIcon(QMessageBox::Information); 
// Основное сообщение Message Box
msgBox.setInformativeText("Just show infornation."); 
// Добавление реагирования на софт клавиши
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); 
// На какой кнопке фокусироваться по умолчанию
msgBox.setDefaultButton(QMessageBox::Ok); 

/* Запускаем QMessageBox. После выполнения, в ret будет лежать значение кнопки, на которую нажали - это необходимо для дальнейшей обработки событий*/
int ret = msgBox.exec(); 
// Собственно вот этот case и отвечает за обработку событий
switch (ret) {   
case QMessageBox::Save:
     // Сюда пишем обработку события Cancel
     break;
  case QMessageBox::Ok:
     // Сюда пишем обработку события Ok
     break;
  default:
     // Сюда пишем обработку события по умолчанию
     break;
}

Несколько "быстрых" вариантов создания MessageBox

QMessageBox::warning(0,"Warning", "Warning message text");
QMessageBox::information(0, "Information", "Information message text");
QMessageBox::critical(0, "Critical", "Critical message text");

Взято отсюда

понедельник, 1 марта 2010 г.

Надоело __history в Delphi?

Пишу проект на Delphi 2007. Через некоторое время заметил что папка с проектом начала ненормально раздуваться.

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

Покопавшись нашел 
Tools->Options->Editor Options->Create backup files

Снимаем галочку и радуемся.