Философия программиста. Реферат: Философские аспекты программирования

Стоит ли учиться программированию?

“Программирование” представляет собой очень обширное понятие. Некоторые языки программирования намного легче, чем другие. Некоторые языки требуют понимания того, как программа “разговаривает” с компьютером. Наиболее важной частью изучения кодов - это поддержание правильного хода мышления. Суть не состоит в том, чтоб сказать себе «я могу это сделать» или прочитать нужную литературу…

Суть заключается в следующем…

Учить или не учить программирование?

Грамотность в любом компьютерном языке, от простого HTML к сложному C + +, требует преданности не только к технологии, но и к ее безконечным изменениям. HTML5 не без причины заканчивается на цифру. Когда достаточное количество веб-браузеров начнут поддерживать HTML6, разработчикам придется снова научиться чему-то новому.

Возможные причины, почему бы вы захотели вовлечь себя в новый процесс обучения:

  • Набраться уверености: у меня было несколько клиентов, которые считали, что если они овладеют языком программирования, то тогда компьютеры будут их меньше пугать.
  • Необходимость: технические проблемы могут возникнуть в любую минуту.
  • Острые ощущения: некоторые люди просто хотят освоить новые навыки.
  • Чтобы понять, что возможно: когда разработчик говорит: «Это не возможно сделать!» Имеет ли он в виду, что это вправду не возможно, или он просто не хочет брать на себя эту головную боль?

Будьте всегда любопытными

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

У меня есть три подхода к решению проблемы с любым проектом:

  • Найдите тему, которая вас раздражает

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

  • Вы должны быть вознаграждены за дополнительные усилия

Найдя пресловутый зуд, люди, изучающие программирование также должны найти облегчение. Ни учебники, ни инструменты, ни похвала не помогут кому-либо стать мастером КОДА. Только после слов “я написал это и … посмотрите, что я сделал!” вы почувствуете, что преодолели препятствие. Это будет звучать глупо, пока вы сами это не попробуете. Протестированый код, который работает, придаст вам адреналина и подарит чувство, что вы стали мастером компьютерного программирования.

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

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

Практикуйтесь ежедневно

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

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

Кажется безумием, однако подтверждение данной гипотезы можно встретить повсеместно. Например, черный квадрат Малевича. Многие считают его просто черным квадратом, для других же - видится глубокий смысл.
Вполне возможно, вам квадрат просто не открылся, а кто-то нашел в нем озарение. И таких случаем немало. Ведь часто, многие люди проходят мимо чего-нибудь, а потом один человек внезапно делает открытие/изобретение буквально на простых вещах, которые валялись вокруг нас, но мы их "не замечали". Там может дело не в том, что мы их не замечали, а в том что вещи нам не открылись? Эта, крайне спорная и интересная позиция, имеет очень реальные шансы на существование в действительности.

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

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

Функция Мировоззрение(Ценности) Ценности = Алгоритм вычисления ценностей() Вернуть Ценности Конец Функции Основная программа Цикл (повторять бесконечно){ Ценности = Мировоззрение(Ценности) } Конец программы

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

Как известно, для компьютер способен записывать слова (текст) и объекты (3д модели, картинки). Единственная брешь, которая стоит на пути создании ИИ - понятие. Т.е. то, что связывает слово и объект. Если кто-то придумает, как засунуть в машину систему понятий, то ИИ будет создан.

Дмитрий Якушев

«Философия»

программирования на языке С++

издание второе, дополненное и исправленное

УДК 004.43 ББК 32.973.202

Якушев Д. М.

Я49 «Философия» программирования на языке С++. / Д. М. Яку шев. - 2 е изд. - М.: Бук пресс, 2006. - 320 с.

ISBN 5 9643 0028 6

Автором языка C++ является Бьерн Страуструп, сотрудник известной фирмы AT&T. C++ (а точнее, его предшественник, С with classes) был создан под влиянием языка Simula (надо сказать, что этот язык программирования появился еще в 1967 году). Собственно, к тому моменту, когда появился C++, С уже заработал себе популярность; профессиональные программисты уважа ют его за возможность использовать преимущества конкретной архитектуры, создавая при этом программы на языке относительно высокого уровня.

В настоящее время C++ - один из самых популярных (если не самый популярный) языков программирования. Именно С++ позволяет написать программу с использованием объектно ориентированных подходов (а про граммы, которые этого требуют, обычно очень большие) и при этом достаточ но «быструю».

Эта книга познакомит читателя с «философией» и основами програм мирования на языке С++. В книге приводится множество примеров, скомпи лированных и проверенных автором.

УДК 004.43 ББК 32.973.202

Часть 1.

Глава 1. С++ - язык программирования общего назначения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

Глава 2. Лексика. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Глава 3. Синтаксис. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 Глава 4. Область видимости. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Глава 5. Определения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 Глава 6. Компоновка. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Глава 7. Классы памяти. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Глава 8. Основные типы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Глава 9. Производные типы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 Глава 10. Объекты и LVALUE (адреса) . . . . . . . . . . . . . . . . . . . . . . . . .15 Глава 11. Символы и целые. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Глава 12. Преобразования. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 Глава 13. Выражения и операции. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 Глава 14. Описания. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 Глава 15. Спецификаторы класса памяти. . . . . . . . . . . . . . . . . . . . . .31 Глава 16. Описатели. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34 Глава 17. Описания классов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 Глава 18. Инициализация. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51 Глава 19. Перегруженные имена функций. . . . . . . . . . . . . . . . . . . . .58 Глава 20. Описание перечисления. . . . . . . . . . . . . . . . . . . . . . . . . . . . .59 Глава 21. Описание Asм. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60 Глава 22. Операторы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61 Глава 23. Внешние определения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66

Глава 24. Командные строки компилятора. . . . . . . . . . . . . . . . . . . . .68 Глава 25. Обзор типов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70 Глава 26. Соображения мобильности. . . . . . . . . . . . . . . . . . . . . . . . . .75 Глава 27. Свободная память. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76

Часть 2. Турбо С++

Глава 1. Интегрированная среда разработки. . . . . . . . . . . . . . . . . . . .78 Глава 2. Строка меню и меню. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79 Глава 3. Окна TURBO C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79 Глава 4. Работа с экранным меню. . . . . . . . . . . . . . . . . . . . . . . . . . . . .80

Глава 5. Структура файла, типы данных и операторов ввода вывода. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87

Глава 6. Арифметические, логические операции и операции отношения и присваивания. . . . . . . . . . . . . . . . . . . . . . .91

Глава 7. Логическая организация программы и простейшее использование функций. . . . . . . . . . . . . . . . . . . . . . . . . .95

Глава 8. Логическая организация простой программы. . . . . . . . . . .95 Глава 9. Использование констант различных типов. . . . . . . . . . . . .96 Глава 10. Управляющие структуры. . . . . . . . . . . . . . . . . . . . . . . . . . . .98

Глава 11. Приемы объявления и обращения к массивам, использование функций и директивы define

при работе с массивами. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100

Часть 3. От теории к практике

Глава 1. Правило «право лево» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103 Глава 2. STLport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104 Глава 3. Язык программирования от Microsoft: C# . . . . . . . . . . . . . .106 Глава 4. C++ Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108 Глава 5. Применение «умных» указателей. . . . . . . . . . . . . . . . . . . . . .111 Глава 6. Рассуждения на тему «умных» указателей. . . . . . . . . . . . . .116 Глава 7. Виртуальные деструкторы. . . . . . . . . . . . . . . . . . . . . . . . . . . .122 Глава 8. Запись структур данных в двоичные файлы. . . . . . . . . . . .126

Глава 9. Оператор безусловного перехода goto . . . . . . . . . . . . . . . . . .132 Глава 10. Виртуальный конструктор. . . . . . . . . . . . . . . . . . . . . . . . . . .136 Глава 11. Чтение исходных текстов. . . . . . . . . . . . . . . . . . . . . . . . . . . .141 Глава 12. Функция gets() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143 Глава 13. Свойства. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146 Глава 14. Комментарии. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149 Глава 15. Веб программирование. . . . . . . . . . . . . . . . . . . . . . . . . . . . .154 Глава 16. Ошибки работы с памятью. . . . . . . . . . . . . . . . . . . . . . . . . .158 Глава 17. Создание графиков с помощью ploticus . . . . . . . . . . . . . . .161 Глава 18. Автоматизация и моторизация приложения. . . . . . . . . . .164 Глава 19. Обзор C/C++ компиляторов EMX и Watcom . . . . . . . . . .183 Глава 20. Использование директивы #import . . . . . . . . . . . . . . . . . . .188

Глава 21. Создание системных ловушек

Windows на Borland C++ Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204 Вопросы и ответы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214

Н а у ч н о п о п у л я р н о е и з д а н и е

Якушев Дмитрий Михайлович

«ФИЛОСОФИЯ» ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ С++

Главный редактор Б. К. Леонтьев

Шеф редактор А. Г. Бенеташвили

Оригинал макет И. В. Царик

Художник О. К. Алехин

Художественный редактор М. Л. Мишин Технический редакторК. В. Шапиро

Корректоры Л. С. Зимина, К. В. Толкачева

Подписано в печать 07.05.2006. Формат 60x90/16. Гарнитура «Ньютон». Бумага офсетная. Печать офсетная. Печ. л. 20. Тираж 3000.

Введение в язык программирования С++

Часть 1. Введение в язык

программирования С++

С++ - язык программирования общего назначения

Автором языка C++ является Бъерн Страуструп, сотрудник изве стной фирмы AT&T. C++ (а точнее, его предшественник, С with classes) был создан под влиянием Simula (надо сказать, что этот язык программи рования появился еще в 1967 году). Собственно, к тому моменту (когда появлялся C++), С уже заработал себе популярность; обычно, его очень уважают за возможность использовать возможности конкретной архи тектуры, при этом все еще используя язык относительно высокого уров ня. Правда, обычно, именно за это его и не любят. Конечно же, при этом терялись (или извращались) некоторые положения построения про грамм; например, в С фактически отсутствует возможность создавать модульные программы. Нет, их конечно же создают, но при помощи не которых «костылей» в виде использования директив препроцессора - такой модульности, как, например в Modula 2 или Ada, в С нет. Кстати сказать, этого нет до сих пор и в C++.

С самого начала подчеркивалось то, что C++ - развитие языка Си, возможно, некоторый его диалект. Об этом говорит тот факт, что первым компилятором (существующим до сих пор) являлся cfront , кото рый занимался тем, что переводил исходный текст на C++ в исходный текст на Си. Это мнение бытует до сих пор и, надо сказать, до сих пор оно является небезосновательным; тем не менее, С и C++ - разные языки программирования.

Основное отличие C++, когда он только появлялся, была явная поддержка объектно ориентированного подхода к программированию. Надо понимать, что программировать с использованием ООП и ООА можно где угодно, даже если инструментарий явно его не поддерживает; в качестве примера можно взять библиотеку пользовательского интер

Введение в язык программирования С++

фейса GTK+, которая написана на «чистом» С и использованием прин ципов объектно ориентированного «дизайна». Введение в язык про граммирования средств для поддержки ООП означает то, что на стадии компиляции (а не на стадии выполнения программы) будет производит ся проверка совместимости типов, наличия методов и т.п. В принципе, это достаточно удобно.

Опять же, точно так же как и С не является в чистом виде языком программирования высокого уровня (из за того, что позволяет выпол нить слишком много трюков), C++, строго говоря, не является объект но ориентированным языком программирования. Мешают этому такие его особенности, как наличие виртуальных функций (потому что при разговоре о полиморфизме никто никогда не оговаривает того, что неко торые методы будут участвовать в нем, а некоторые - нет), присутствие до сих пор функции main() и т.п. Кроме того, в C++ нет таких сущностей, как, например, метаклассы (хотя они, наверное, не так уж сильно и нуж ны) и интерфейсы (вместо них используется множественное наследова ние). Тем не менее, C++ на текущий момент один из самых популярных (если не самый популярный) язык программирования. Почему? Да пото му что все эти «уродства» позволяют в итоге написать программу с ис пользованием объектно ориентированных подходов (а программы, ко торые этого требуют, обычно очень большие) и при этом достаточно «быструю». Этому способствует именно наличие виртуальных функций (т.е., то, что программист сам разделяет еще во время проектирования, где ему понадобится полиморфизм, а где будет достаточно объединить некоторые функции в группу по некоторому признаку), обязательное на личие оптимизатора и прочее. Все это позволяет при грамотном исполь зовании все таки написать работающую программу. Правда, достаточно часто встречаются примеры неграмотного использования, в результате чего выбор C++ для реализации проекта превращается в пытку для про граммистов и руководства.

На текущий момент на язык программирования C++ существует стандарт, в который включена, помимо прочего, стандартная библиоте ка шаблонов. О шаблонах разговор особый, формально они тоже явля ются «костылями» для того, чтобы сделать, так сказать, полиморфизм на стадии компиляции (и в этом качестве очень полезны), а вот библиотека

Бесспорно правильное со всех сторон новшество. Наличие, наконец то, стандартных способов переносимо (имеется в виду, с компилятора на компилятор) отсортировать список (кроме написания всех соответству ющих подпрограмм и структур данных самостоятельно) очень сильно облегчило жизнь программиста. Правда, до сих пор очень много людей плохо себе представляют как устроена STL и как ей пользоваться (кроме std::cin иstd::cout ).

Введение в язык программирования С++

Важной вехой в развитии программирования явилось создание и широкое распространение языка С++. Этот язык, сохранив средства ставшего общепризнанным стандартом для написания системных и при кладных программ языка С (процедурно ориентированный язык), ввел в

практику программирования возможности нового технологического подхода к разработке программного обеспечения, получившего название «объектно ориентированное программирование».

Язык программирования C++ - этоC* , расширенный введением классов,inline функций, перегруженных операций, перегруженных имен функций, константных типов, ссылок, операций управления сво бодной памятью, проверки параметров функций.

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

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

С++ является языком программирования общего назначения. Именно этот язык хорошо известен своей эффективностью, экономич ностью, и переносимостью.

Указанные преимущества С++ обеспечивают хорошее качество разработки почти любого вида программного продукта.

Использование С++ в качестве инструментального языка позво ляет получать быстрые и компактные программы. Во многих случаях программы, написанные наС++ , сравнимы по скорости с программами, написанными на языке ассемблера.

Перечислим некоторые существенные особенности языка С++ :

С++ обеспечивает полный набор операторов структурного программирования;

С++ предлагает необычно большой набор операций;

Введение в язык программирования С++

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

С++ поддерживает указатели на переменные и функции;

Указатель на объект программы соответствует машинному адресу этого объекта;

Посредством разумного использования указателей можно создавать эффективно выполняемые программы, т.к. указатели позволяют ссылаться на объекты тем же самым путем, как это делает ЭВМ;

С++ поддерживает арифметику указателей, и тем самым позволяет осуществлять непосредственный доступ и манипуляции с адресами памяти.

Глава 2. Лексика

Есть шесть классов лексем: идентификаторы, ключевые слова, константы, строки, операторы и прочие разделители. Символы пробела, табуляции и новой строки, а также комментарии (собирательно - «бе лые места»), как описано ниже, игнорируются, за исключением тех слу чаев, когда они служат разделителями лексем.

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

Комментарии

Символы /* задают начало комментария, заканчивающегося сим волами*/ . Комментарии не могут быть вложенными.

Символы // начинают комментарий, который заканчивается в конце строки, на которой они появились.

Идентификаторы (имена)

Многие операции С++ соответствуют машинным командам и поэтому допускают прямую трансляцию в машинный код;

Идентификатор - последовательность букв и цифр произвольной длины; первый символ обязан быть буквой; подчерк "_" считается за бук ву; буквы в верхнем и нижнем регистрах являются различными.

Идентификаторы signed иvolatile зарезервированы для примене ния в будущем.

Константы

Есть несколько видов констант. Ниже приводится краткая сводка аппаратных характеристик, которые влияют на их размеры.

Целые константы

Целая константа, состоящая из последовательности цифр, счита ется восьмеричной, если она начинается с 0 (цифры ноль), и десятичной в противном случае. Цифры 8 и 9 не являются восьмеричными цифрами.

Последовательность цифр, которой предшествует 0х или0Х , вос принимается как шестнадцатеричное целое.

В шестнадцатеричные цифры входят буквы от а илиА доf илиF , имеющие значения от 10 до 15.

Десятичная константа, значение которой превышает наибольшее машинное целое со знаком, считается длинной (long ); восьмеричная и шестнадцатеричная константа, значение которой превышает наиболь

Введение в язык программирования С++

шее машинное целое со знаком, считается long ; в остальных случаях це лые константы считаютсяint .

Явно заданные длинные константы

Десятичная, восьмеричная или шестнадцатеричная константа, за которой непосредственно стоит l (латинская буква «эль») илиL , считает ся длинной константой.

Символьные константы

Символьная константа состоит из символа, заключенного в оди ночные кавычки (апострофы), как, например, "х" . Значением символь ной константы является численное значение символа в машинном набо ре символов (алфавите).

Символьные константы считаются данными типа int . Некоторые неграфические символы, одиночная кавычка" и обратная косая\ , могут быть представлены в соответствие со следующим спискомescape после довательностей:

символ новой строки NL(LF)

горизонтальная табуляция NT

вертикальная табуляция VT

возврат на шаг BS

возврат каретки CR

перевод формата FF

обратная косая \

одиночная кавычка (апостроф) "

набор битов 0ddd

набор битов 0xddd

Escape последовательность\ddd состоит из обратной косой, за ко торой следуют 1, 2 или 3 восьмеричных цифры, задающие значение тре буемого символа. Специальным случаем такой конструкции является\0 (не следует ни одной цифры), задающая пустой символNULL .

Escape последовательность\xddd состоит из обратной косой, за которой следуют 1, 2 или 3 шестнадцатеричных цифры, задающие значе ние требуемого символа. Если следующий за обратной косой символ не является одним из перечисленных, то обратная косая игнорируется.

Введение в язык программирования С++

Константы с плавающей точкой

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

Перечислимые константы

Имена, описанные как перечислители, являются константами ти

па int .

Описанные константы

Объект любого типа может быть определен как имеющий посто янное значение во всей области видимости его имени. В случае указате лей для достижения этого используется декларатор *const ; для объектов, не являющихся указателями, используется описательconst .

Строка есть последовательность символов, заключенная в двой ные кавычки: «...» . Строка имеет типмассив символов и класс памятиstatic , она инициализируется заданными символами.

Компилятор располагает в конце каждой строки нулевой (пустой) байт \0 с тем, чтобы сканирующая строку программа могла найти ее ко нец.

В строке перед символом двойной кавычки " обязательно должен стоять\ ; кроме того, могут использоваться те жеescape последователь ности, что были описаны для символьных констант.

И, наконец, символ новой строки может появляться только сразу после \ ; тогда оба, -\ и символ новой строки, - игнорируются.

Глава 3. Синтаксис

Запись синтаксиса

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

Введение в язык программирования С++

Альтернативные категории записываются на разных строках. Не обязательный терминальный или нетерминальный символ обозначается нижним индексом «opt», так что {выражение opt} указывает на необяза тельность выражения в фигурных скобках.

Имена и типы

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

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

Область видимости

Есть четыре вида областей видимости: локальная, файл, програм ма и класс.

Локальная

Имя, описанное в блоке, локально в этом блоке и может исполь зоваться только в нем после места описания и в охватываемых блоках.

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

в самом внешнем блоке этой функции.

Имя, описанное вне любого блока или класса, может использо ваться в файле, где оно описано, после места описания.

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

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

Введение в язык программирования С++

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

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

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

Имя класса, скрытое именем, которое не является именем типа, все равно может использоваться, если перед ним стоит class ,struct илиunion . Имя перечисленияenum , скрытое именем, которое не является именем типа, все равно может использоваться, если перед ним стоитenum .

Глава 5. Определения

Описание является определением, за исключением тех случаев, когда оно описывает функции, не задавая тела функции, когда оно со держит спецификатор extern (1) и в нем нет инициализатора или тела функции, или когда оно является описанием класса.

Глава 6. Компоновка

Имя в файловой области видимости, не описанное явно как static , является общим для каждого файла многофайловой программы. Тако вым же является имя функции. О таких именах говорится, что они внеш ние.

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

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

Введение в язык программирования С++

Во всех остальных случаях должно быть ровно одно определение для внешнего имени в программе.

Реализация может потребовать, чтобы составное const , использо ванное там, где не встречено никакого определенияconst , должно быть явно описаноextern и иметь в программе ровно одно определение. Это же ограничение может налагаться наinline функции.

Глава 7. Классы памяти

Есть два описываемых класса памяти:

автоматический

статический.

Автоматические объекты локальны для каждого вызова блока и сбрасываются по выходе из него.

Статические объекты существуют и сохраняют свое значение в те чение выполнения всей программы.

Некоторые объекты не связаны с именами и их времена жизни яв но управляются операторами new иdelete .

Глава 8. Основные типы

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

В настоящий момент имеются целые трех размеров, описываемые как short int ,int иlong int . Более длинные целые (long int ) предоставляют не меньше памяти, чем более короткие целые (short int ), но при реализа ции или длинные, или короткие, или и те и другие могут стать эквива лентными обычным целым.

«Обычные» целые имеют естественный размер, задаваемый архи тектурой центральной машины; остальные размеры делаются такими, чтобы они отвечали специальным потребностям.

Введение в язык программирования С++

Каждое перечисление является набором именованных констант. Свойства enum идентичны свойствамint . Целые без знака, описываемые какunsigned , подчиняются правилам арифметики по модулю2n , гдеn - число бит в их представлении.

Числа с плавающей точкой одинарной (float ) и двойной (double ) точности в некоторых машинных реализациях могут быть синонимами.

Поскольку объекты перечисленных выше типов вполне можно интерпретировать как числа, мы будем говорить о них как об арифмети ческих типах.

Типы char ,int всех размеров иenum будут собирательно называть ся целыми типами. Типыfloat иdouble будут собирательно называться плавающими типами.

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

Поскольку пустое выражение обозначает несуществующее значе ние, такое выражение такое выражение может использоваться только как оператор выражение или как левый операнд в выражении с запятой. Выражение может явно преобразовываться к типу void .

Глава 9. Производные типы

Кроме основных арифметических типов концептуально сущест вует бесконечно много производных типов, сконструированных из ос новных типов следующим образом:

массивы объектов данного типа;

функции, получающие аргументы данного типа и возвращающие объекты данного типа;

указатели на объекты данного типа;

константы, являющиеся значениями данного типа;

Введение в язык программирования С++

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

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

В целом эти способы конструирования объектов могут приме няться рекурсивно.

Объект типа void* (указатель наvoid ) можно использовать для ука зания на объекты неизвестного типа.

Объекты и LVALUE (адреса)

Объект есть область памяти; lvalue (адрес) есть выражение, ссыла ющееся на объект. Очевидный пример адресного выражения - имя объ екта.

Есть операции, дающие адресные выражения: например, если Е - выражение типа указатель, то*Е - адресное выражение, ссылающееся на объект, на который указываетЕ .

Термин «lvalue» происходит из выражения присваиванияЕ1=Е2 , в котором левый операндЕ1 должен быть адресным (value ) выражением.

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

Глава 11. Символы и целые

Символ или короткое целое могут использоваться, если может ис пользоваться целое. Во всех случаях значение преобразуется к целому.

Преобразование короткого целого к длинному всегда включает в себя знаковое расширение; целые являются величинами со знаком. Со держат символы знаковый разряд или нет, является машинно зависи мым. Более явный тип unsigned char ограничивает изменение значения от 0 до машинно зависимого максимума.

В машинах, где символы рассматриваются как имеющие знак (знаковые), символы множества кода ASCII являются положительными.

Введение в язык программирования С++

Однако, символьная константа, заданная восьмеричной esc по следовательностью подвергается знаковому расширению и может стать отрицательным числом; так например,"\377" имеет значение1 .

Когда длинное целое преобразуется в короткое или в char , оно урезается влево; избыточные биты просто теряются.

Float и doublе

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

Плавающие и целые

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

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

Указатели и целые

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

Можно производить вычитание над двумя указателями на объек ты одного типа; в этом случае результат преобразуется к типу int илиlong в зависимости от машины.

Всегда при сочетании целого без знака и обычного целого обыч ное целое преобразуется к типу unsigned и результат имеет типunsigned .

Значением является наименьшее целое без знака, равное целому со знаком (mod 2** (размер слова)) (т.е. по модулю2** (размер слова)). В дополнительном двоичном представлении это преобразование является пустым, и никаких реальных изменений в двоичном представлении не происходит.

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

Здесь и далее я буду рассматривать общекнижный пример с сотрудниками предприятия, писать будем на чем-то СИ-подобном. Наследовать класс Сотрудник (Employee) от класса Человек (Person) – прекрасная идея, особенно если хранить данные исключительно в памяти: SQL имеет некоторые проблемы с наследованием таблиц, но речь не об этом - ООП со своим иерархизмом, агрегациями, композициями и наследованиями предлагает идеальный способ организации данных. Проблемы с методами.

За каждым методом бизнес-логики стоит факт мира, который этот метод (чаще не в одиночку) моделирует. Факты программирования – это операции: дальше будем называть их так. Делая метод членом класса, ООП требует от нас привязать операцию к объекту, что невозможно, потому что операция – это взаимодействие объектов (двух и более), кроме случая унарной операции, чистой рефлексии. Метод ВыдатьЗарплату (PaySalary) может быть отнесен к классам Сотрудник (Employee), Касса (Cash), БанковскийСчет (Account) – все они равнозначны в праве владения им. Дилемма о расположении методов сопутствует всему процессу разработки: неловкое ее разрешение может оказаться критичным и даже фатальным.

В книгах по программированию честные авторы стыдливо признают, что «объекты – это как бы не совсем объекты», а ООП – всего лишь способ организации кода, а не механизм моделирования. Но все дело том, что «мир есть совокупность фактов, а не вещей» – отсюда принципиальная неспособность построить адекватную модель, применяя ООП в том виде, как этого требуют писатели учебников. Важно понять: в коде возможно моделировать мир, но атомами модели должны стать факты, а не объекты.

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


В 2015 году вы могли заметить перемены в способе разработки приложений на JavaScript. Разработчики уходят от непредсказуемой архитектуры с мутабельным состоянием в сторону более предсказуемой иммутабельной архитектуры приложений .

С такими фреймворками как Backbone, было принято синхронизировать сами данные и представление данных – для этого приходилось вручную подписываться на нужные события dom. Такой способ был подвержен ошибкам и вынуждал использовать слишком много типового кода. Пришел Angular и исправил это с помощью автоматизированного двустороннего биндинга.

Но сейчас все движется в другом направлении.

… но это нормально. Любое проектирование отстой. И всегда будет отстоем.

Если вы мне не верите, давайте объясню…

Ни один проект не переживает встречи с реализацией

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

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

Это нормально.

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

Недостающие данные могут быть сделаны опциональными или заменены умолчальными.

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

Ограничение уникальности можно

Еще по ходу чтения мне вспомнился Эдсгер Дейкстра с его знаменитой фразой: «Я денно и нощно молю, чтобы как можно больше моих собратьев-программистов нашли способ освободиться от проклятья совместимости» («I pray daily that more of my fellow-programmers may find the means of freeing themselves from the curse of compatibility») из книги Смиренный программист (1972 sic!!!). А позже и Эрик Реймонд с своим Собором и Базаром (1997 год). Но текст Винджа не только о проклятье совместимости, на трех страничках поднят (и в общем то оставлен без ответов) целый пласт вопросов:

  1. Проблема совместимости в широком смысле;
  2. Проблема поддержки старого кода;
  3. Проблема зависимости человеческой жизни «от бесчувственных роботов» (с), к чему мы стремительно приближаемся;
  4. Проблема data mining`а вообще и поиска готового решения в бездонной бочке рецептов в частности (github, stack overflow?);
  5. Проблема «переписывания» старого кода (и плохого, и хорошего) - этот момент так и хочется перечитывать:);
  6. Проблема необъятности ИТ-технологий. Иногда говорят, что последний универсальный физик жил в середине пошлого века, имея ввиду Льва Ландау. Похоже сейчас наступает (или уже наступило) время, когда найти универсального программиста таки уже невозможно;
  7. В тексте нет слова хакер, ни в позитивной, ни в негативной коннотации. Но написано и об исследователях, и о тех преимуществах, которые можно получить зная те или иные backdoor`ы и о том, какую власть это может дать.
  8. и наверное это не все… :)

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

В качестве критики хочется отметить, что Виндж прошел мимо ИИ (и сильного и слабого, вообще мимо пробежал, даже нейронные сети не затронул) и свел преимущества ИТ к производительности. Так же в тексте не ощущается присутствие мегакорпораций (хотя конечно «Глубина в небе» не относится к киберпанку), если не считать Кенг-Хо таковой. Нет патентных войн, не затронуты вопрос копирайта и проблема закрытых проприетарных разработок, исходные коды к которым так и не были опубликованы.

Не о программировании, но о стандартах

Дальше в той же главе затронут интереснейший вопрос галактического вещания с целью распространения собственных технологий. Зачем? Стандартизация. Распространение собственного языка и собственных стандартов и технологий, что позволит с одной стороны подтянуть отсталые цивилизации до приемлемого для торговли уровня, а с другой снизить затраты на коммуникацию и обеспечение совместимости и как следствие облегчит торговлю и повысит маржинальность. Интересно, знал ли Виндж на момент написания книги о стандартизации корабельной оснастки английского флота времен великих завоеваний, позволившей снизить затраты на ремонт и обслуживание? А о распространении английского языка в качестве делового, научного и т.д.? Англичане учили (заставляли учить?) местных аборигенов своему языку. Аналогично поступали испанцы и французы. И сейчас английский, испанский, французский, португальский имеют очень широкое распространение. А вот голландцы считали, что аборигенов не нужно учить своему языку. Много ли мест на земном шаре, где говорят на голландском кроме самой Голландии?
Сейчас обучение английскому поставлено на поток по всему миру. Использование стандартизированных методик и учебников, стандартизированных экзаменов и шкал оценок. Только ли частный бизнес?

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

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

Разница между продуктом и проектом в том, что при разработке продукта есть план, а при разработке проекта есть исследования. Если у вас есть какая-то не решённая проблема, скажем вы ещё не решили какую базу данных использовать в своём проекте, то вам понадобится этот вопрос изучать, то есть исследовать. Это называется technology research. Исследование, это вовсе не обязательно, что-то совершенно новое в мировом масштабе, если вы строите мост, то вам надо исследовать грунт в данном конкретном месте, и пока этот грунт не исследован, мост, как продукт, ещё не существует, пока что это - проект. Ещё не известно, какой грунт, а значит не известно из чего делать мост, как его укреплять, невозможно посчитать бюджет и распланировать график работ.

Кто умеет копировать, тот умеет ДЕЛАТЬ. Это сказал Леонардо да Винчи. Видите ли, вы исходите из своих представлений, о том, что такое ХР, винда, операционка. Люди как рассуждают:

Мне было ещё мало лет у меня стояла ХР, вот были золотые деньки, но тепереча не то, что давеча. Новые времена, современное ПО. Не понимаю, зачем копаться в старье? Вы бы хоть делали клон десятой винды, но куда с вашей то скоростью, вы его сделаете лет через 100.

Но если люди копируют старое ПО, это ещё не значит, что они ретрограды или некрофилы. Во-первых они это делают сейчас, находясь в современных условиях, зная все тенденции и направления. Во-вторых, устаревание софта вообще вещь крайне контр-интуитивная. Например, в самых современных приложениях есть куски кода написанные более двадцати лет назад, и, заметьте, - никто не собирается их переписывать. Это информация, она не изнашивается, как изнашиваются метал или дерево. Но людям свойственно своё бытовое восприятие переводить на вещи нематериальные и требующие совершенно иного взгляда. Понимаете? Информация. Это не вещь. Сравнивайте со стихами Пушкина.

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

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

Также тяжело не брать во внимание и обратное влияние ЭВМ на человеческое мышление. Как изменяется жизнь человека и его духовные ценности под воздействием технического прогресса.

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

Мышление компьютера

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

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

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

Отсюда следует вывод, что сейчас программы для ЭВМ, а, также компьютеры мыслить не могут.

Моральная сторона программирования

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

Эти программы пишут люди, но вот в чём вопрос: что движет этим человеком?

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

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

Заключение.

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


Библиографический список

  1. Варфоломеева Т.Н., Овчинникова И.Г. Учебное пособие по программированию. [Текст]: учеб. пособие / Магнитогорск: МаГУ, 2005. Под грифом УМО. – 104 с.
  2. Варфоломеева Т.Н., Овчинникова И.Г., Платонова О.И. Методологии программирования. [Текст]: учеб. пособие / Магнитогорск: МаГУ, 2007. – 204 с.
  3. Варфоломеева, Т.Н. Лабораторный практикум по объектно-ориентированному программированию. [Текст]: учеб. пособие / Т.Н. Варфоломеева, И.Ю. Ефимова – Москва, 2014. (2-е издание, стереотипное)
  4. Варфоломеева, Т.Н. Лабораторный практикум по структурному программированию на примере языка PASCAL [Текст]: учеб. пособие / Т.Н. Варфоломеева, С.А. Повитухин. – Магнитогорск: МаГУ, 2013. – 123 с.
  5. Варфоломеева, Т.Н. Пособие для подготовки к ЕГЭ и ЦТ по информатике [Текст]: учеб. пособие в 2-х частях, Том. Часть 1. Алгоритмизация и программирование / Т.Н. Варфоломеева, И.Г. Овчинникова. – Магнитогорск: МаГУ, 2006. – 128 с.
  6. Варфоломеева, Т.Н. Учебное пособие для подготовки к централизованному тестированию по информатике [Текст]: учеб. пособие / Т.Н. Варфоломеева, И.Г. Овчинникова, Н.Г. Корнещук Магнитогорск: МаГУ, 2002. – 205 с.
  7. Варфоломеева, Т.Н. Учебно-методическое пособие для подготовки к вступительным экзаменам по информатике [Текст]: учеб. пособие / Т.Н. Варфоломеева, И.Г. Овчинникова, Е.Н. Гусева Магнитогорск: МаГУ, 2002. – 116 с.
  8. Ефимова, И.Ю. Компьютерное моделирование [Текст]: сборник практических работ 2-е издание, стереотипное / И.Ю. Ефимова, Т.Н. Варфоломеева. – Москва: ООО «Флинта», 2014. – 67 с. ISBN: 978-5-9765-2039-4
  9. Ефимова, И.Ю. Методика и технологии преподавания информатики в учебных заведениях профессионального образования [Текст]: учебно-метод. пособие 2-е издание, стереотипное / И.Ю. Ефимова, Т.Н. Варфоломеева. – Москва: ООО «Флинта», 2014. – 41 с. ISBN 978-5-9765-2040-0
  10. Мовчан И.Н. Инновационные подходы в преподавании информатики в вузе // Современные научные исследования и инновации. – 2014. – № 5-2 (37). – С. 45.
  11. Мовчан И.Н. Некоторые аспекты информационной подготовки студентов вуза // Сборник научных трудов Sworld. – 2008. Т.18. – № 1. – С. 34-36.
  12. Мовчан И.Н.Педагогический контроль информационной деятельности студента вуза в процессе профессиональной подготовки: дис. … канд. пед. наук/Мовчан Ирина Николаевна; Магнитогорский ГУ. – Магнитогорск, 2009, – 205 с.
  13. Овчинникова И.Г. Оценка эффективности образования личности [Текст] / И.Г. Овчинникова, В.А. Беликов, Л.В. Курзаева // Социальное партнерство в профессиональном образовании Материалы Всероссийской научно-практической конференции. ФГОУ СПО «Магнитогорский государственный профессионально-педагогический колледж», Лаборатория исследования проблем управления качеством начального и среднего профессионального образования УрО РАО: сб. науч. ст. Магнитогорск, 2010. – С. 178-187.
  14. Овчинникова, И.Г. Задачник- практикум по программированию [Текст]: учеб.-метод. пособие. / И.Г. Овчинникова, Т.Н. Варфоломеева. – Магнитогорск: МаГУ, 2009. – 77 с.
  15. Сахнова Т.Н., Овчинникова И.Г. Алгоритмы поиска в курсе информатики средней школы [Текст] // Информатика и образование. – 2010 – № 11 – С. 79-83.
  16. Сахнова Т.Н., Овчинникова И.Г. Алгоритмы сортировки при решении задач по программированию [Текст] // Информатика и образование. – 2011. – № 2 – С. 53-57
  17. Сахнова, Т.Н. Основы алгоритмизации [Текст]: учеб. пособие, 2-е изд., перерабо. и доп. / Т.Н. Сахнова, И.Г. Овчинникова. – Магнитогорск: МаГУ, 2002. под грифом УМО. – 131 с.
  18. Сахнова, Т.Н. Педагогические условия формирования профессионального информационного мышления студентов университета [Текст] : дис. …канд. пед. наук: 13.00.08 / Т.Н. Сахнова. – Магнитогорск, 2003.
  19. Сахнова, Т.Н. Пособие для подготовки к ЕГЭ и ЦТ по информатике [Текст]: учеб. пособие в 2-х частях, Том. Часть 2. Базовый курс / Т.Н. Сахнова, И.Г. Овчинникова. – Магнитогорск: МаГУ, 2006. – 128 с.
  20. Чусавитина, Г.Н. Разработка модели управление рисками, порождаемыми применением дистанционных образовательных технологий в вузе [Текст] / Г.Н. Чусавитина, М.О. Чусавитин, Т.Н. Варфоломеева // Совершенствование подготовки IT-специалистов по направлению «Прикладная информатика» для инновационной экономики: сб. науч. тр. Москва, 2008. – С. 216-218.
Количество просмотров публикации: Please wait

 

Возможно, будет полезно почитать: