Код:

Lilitochka-club

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Lilitochka-club » Введение в программирование » Введение в программирование


Введение в программирование

Сообщений 1 страница 20 из 74

1

Урок первый.
Как в любой дисциплине, первое занятие начинается со знакомства, поэтому думаю будет резонно осветить некоторые исторические моменты. Если вы вдруг встретите непонятные вам слова, то прошу не пугаться, по мере чтения урока, вы поймете о чем идет речь. Так что не спешите, изучайте и всё у вас получится. Приятного прочтения.
Краткая история развития ЭВМ.
Под термином "персональный компьютер" (сокращенно ПК) мы с вами в данных уроках будем принимать персональную ЭВМ (электронно-вычислительную машину), разработанную на базе микропроцессоров семейства 80x86 фирмы Intel (8086, 80286, i386, i486, Pentium). Именно к ним относятся одни из наиболее распространенных (если не самых) в мире персональных компьютеров фирмы IBM и совместимых с ними.
1971 г. - появляется первый микропроцессор реализованный в виде одной интегральной схемы. Разработчик фирма Intel. С тех пор она так и осталась лидером в области создания микропроцессоров.
Этот процессор представлял собой фактически микрокалькулятор, работавший с 4-разрядными данными.
1974 г. - эта же фирма создала 8-разрядный микропроцессор 8080 с памятью до 64 килобайт (64 Кб). Это уже напоминало настоящий центральный процессор, но очень простой.
1976 г. - фирмой Apple создана первая персональная ЭВМ Она представляла собой процессор, память и устройства ввода-вывода.
1978 г. - фирма Intel разработала микропроцессор нового поколения - 16-разрядный процессор 8086 с памятью до 1 Мбайт (1 Мб). По своим возможностям он был на уровне малых ЭВМ того времени.
1979 г. - появился другой его вариант - микропроцессор 8088, также работающий с 16-разрядными словами (о том, что понимается под термином "слово" будет рассмотрено в других уроках), но использующий 8-разрядную шину (в процессоре 8086 была 16-разрядная шина), что позволило воспользоваться имевшимися в то время внешними устройствами (дисководами и т. п.) с 8-разрядными соединениями. Другими словами, разработчики позаботились о совместимости новой модели с некоторыми старыми комплектующими и носителями информации.
1981 г. - на базе предыдущей модели был создан первый ПК под названием IBM PC (personal computer). Это было большим прорывом. Именно с этого времени началось широкое распространение ПК в мире.
1983 г. - фирма IBM создала усовершенствованную модель ПК - IBM XT (extended Technology).
1983 г. - фирма Intel разработала микропроцессор 80186, но он практически не использовался, т. к. в том же году появился более совершенный микропроцессор 80286.
1984 г. на основе предыдущей модели создали IBM AT (advanced technology).
В процессоре 80286 предусмотрены аппаратные средства для реализации многозадачного режима работы ЭВМ (одновременного выполнения на ЭВМ нескольких программ). Но сами возможности этого процессора оказались недостаточными для практического использования такого режима, поэтому процессор 80286 фактически представляет собой просто более быстрый вариант процессора 8086.
Реально этот режим стал использоваться только с появлением нового поколения микропроцессоров - 32-разрядных.
1987 г. - фирмой Intel был создан процессор i386.
1990 г. - фирма Intel разработала процессор i486.
Они могут работать в двух режимах - в реальном режиме, в котором они фактически представляют собой очень быстрые варианты процессора 8086, и в защищенном режиме, позволяющем реализовать многозадачность.
1993 г. - фирма Intel разработала 64-разрядный микропроцессор, получивший собственное имя Pentium.
Все указанные процессоры объединяют в семейство 80x86, поскольку в них соблюдается преемственность: программа, написанная для младшей модели, может быть без каких-либо изменений выполнена на любой более старшей модели. Обеспечивается это тем, что в основе всех этих процессоров лежит система команд процессора 8086, в старшие же модели лишь добавляются новые команды (главным образом, необходимые для реализации многозадачного режима). Таким образом, процессор 8086 - это база, основа для изучения всех остальных моделей данного семейства. Поэтому в дальнейшем под сокращением ПК будем понимать персональный компьютер с процессором 8086.
Конечно с тех пор создали много новых моделей, но это не суть важно. Главные принципы сохранились и частично наследуются в новых версиях.
Теперь вы знаете, что если увидите на сайтах программу с пометкой "скачать для x86", означает что программа реализована для соответствующего семейства процессоров и операционных систем (в частности Windows 2000 и ХР, а для других версий Windows нужно читать прилагающиеся комментарии разработчиков, чтоб узнать о ее совместимости).



Теги: программирование,процессоры,ПК,Ассемблер,Assembler,Pascal,Паскаль,системы счисления,байт-код

Отредактировано Законник (2011-07-27 09:28:30)

+1

2

Спасибо!
С историей познакомилась.

0

3

Законник написал(а):

Урок первый.

Осилила! http://i073.radikal.ru/1007/d0/656f51f724b9.gif

0

4

Спасибо! Пока вроде понятно... :cool:

0

5

Спасибо!  http://s60.radikal.ru/i168/1007/1b/8ebbd36b1de8.gif

0

6

Молодцы! Второй урок пока в разработке, надо продумать, как всё скомпоновать и объяснить.

0

7

Урок второй.
История языков программирования и принципы работы ПК.
Часть первая.
"В начале было Слово.
И слово это было в два байта".

Анекдот на тему.

Компьютеры были изобретены достаточно давно. Первые из них вообще были ламповыми и занимали очень много места, и требовали целый штат обслуживающего персонала. В те годы был заложен принцип работы всех компьютеров, который справедлив и сейчас. Все данные передаются и записываются в бинарном виде, т.е. при помощи двоичного кода (о системах счисления мы поговорим позднее). Выглядит он примерно следующим образом: 10110100 11111010 00001011 и т.д. Это называется машинным языком. В ПК заложена система сигналов-импульсов двух видов, имеющих логическое значение. Примеры: да-нет, верно-ложно, плюс-минус, включено-выключено. Эти понятия очень приближенные, те кто занимаются именно конструированием "железа" ПК (жесткие длиски, процессоры, карты оперативной памяти) могут конечно возмутиться от такого примитивного объяснения и многое дополнить, но на курсе программирование этого объяснения хватает, чтоб понять основной принцип.
Так появился «бит» bit. Бит это единица информации, которая может принимать значение или 0, или 1, т.е. «включён или выключен». Восемь бит объединяются в байт, т.е. один байт равен 8 битам. Почему именно 8? Да потому что первые компьютеры были восьми разрядными и могли работать одновременно только с 8-ю битами, например, 010000111. Позже вы узнаете, что в один байт можно записать любое число до 255. Но это очень мало, поэтому чаще используют более крупные градации:
1. Два байта = слово.
2. Два слова = двойное слово.
Кстати сказать, данные на диске также хранятся в двоичном виде. Даже текстовые файлы на диске выглядят в виде нулей и единиц. Честно сказать, не знаю как это происходит сейчас на современных жестких дисках, но на старых моделях запись велась с помощью магнитного принципа и имела также два значения: размагничено и намагничено, что соответствовало нулю и единице. Каждое из этих значений занимало один бит. Точно так же (в виде нулей и единиц) выглядит и любая программа, только её называют машинным кодом. Давай с ним познакомимся немного поближе.
Любая программа представляет собой последовательность команд. Эти команды называются процессорными инструкциями. По этим инструкциям процессор определяет, что и как ему нужно делать. Когда ты запускаешь программу, компьютер загружает её машинный код в память и начинает выполнять. Наша задача, как программистов написать эти инструкции, чтобы компьютер понял, что мы от него хотим.
Как видите программировать на машинном языке сложно. Одна из причин этого - цифровая форма записи команд и данных, для людей более привычны символьные обозначения. Например, команда складывания двух регистров (грубо говоря содержимого двух ячеек памяти процессора) выглядит так: #03C3 (Это шестнадцатеричное отображение машинного кода). Нам это мало о чём говорит, и запомнить такую команду очень тяжело. На много проще написать «сложить число 1 + число 2».
Первое время программисты писали в машинных кодах (Вечная им за это память и уважение. Лично мне такое может разве что в страшном сне приснится.), пока кому-то не пришла в голову идея: «Почему бы не писать текст программы на понятном языке, а потом заставлять компьютер переводить этот текст в машинный код?». Идея действительно заслуживала внимания. Так появился первый компилятор – программа, которая переводила текст программ в машинный байт-код. А язык, на котором писался
текст программы, назвали языком программирования. Первым языком программирования был язык ассемблера (Assembler, переводится, как "сборщик". Другое название - автокод - правда сейчас его уже так никто не называет), представляющий собой фактически символьную форму записи машинного языка: в нем вместо цифровых кодов операций выписывают привычные знаки операций или их словесные названия, вместо адресов - имена, а константы записывают в десятичной системе. Программу, записанную в таком виде, вводят в ЭВМ и подают на вход специальному транслятору (почти тоже самое, что и компилятор), называемого ассемблером, который переводит ее на машинный язык, и далее полученную машинную программу выполняют.
Как видно, выполнение программы, написанной на языке ассемблера, осуществляется в два этапа: сначала трансляция, затем счет. Это, конечно, увеличивает время, однако на это охотно идут, т. к. составлять программы на языке ассемблера намного проще, чем на машинном языке. Поэтому в настоящее время, если нужно написать машинную программу, ее не пишут на машинном языке, а пишут только на языке ассемблера (ЯА).
Теперь рассмотрим в чем заключалось удобство ЯА. Можете не пугаться, программирование на ассемблере мы изучать вроде не собираемся, поэтому особо не учите, лишь ловите суть разницы языков.
Вот пример машинного кода: 8BC3.
И тоже самое на языке ассемблера: "mov eax, ebx". Видите как цифры заменили на понятные слова?
Разберем, что все это значит:
"eax" и "ebx" - это регистры процессора. В нашем случае регистры данных (аккумулятор и база).
Регистр процессора - это специально отведенная память для временного хранения какие-либо данных. Грубо говоря это ячейки памяти, через которые проходят и распределяются все данные на ПК.
"mov" - (от англ. move - в данном случае "загрузить") - это команда присваивания (копирования) значения.
"mov eax, ebx" - переведем на нормальный язык - этой командой мы копируем (присваиваем) в регистр "eax" данные хранящиеся в регистре "ebx".
Видите? Всем раздали имена и назначения, а потом просто стали ими манипулировать. Компилятор (транслятор) переводил команды ассемблера в машинный код.
Вроде все прекрасно и удобно, но почему-то среди программистов возникли споры и разногласия. Кто-то воспринял новый метод с удовольствием. А кто-то говорил, что машинные коды лучше. Любители языка Assembler хвалили компилятор за то, что программировать стало проще и быстрее, а противники утверждали, что программа, написанная в кодах, работает быстрей. Говорят, что эти споры доходили до драк и иногда лучшие друзья становились врагами. А в принципе, и те и другие были правы. На языке Assembler действительно программу писать легче и быстрей, а в машинных кодах программа работала быстрее.
К тому моменту, когда программист напишет свою первую версию в машинных кодах, программист на языке Assembler выпустит уже пару новых версий своего шедевра. Те, кто программировал на языке Assembler превратились в убегающих вперед, а те, кто программировал в машинных кодах превратился в вечно
догоняющих. В конце концов, первые убежали на столько, что вторые не смогли догнать, и вынуждены были или перейти на Assembler или отойти от программирования на совсем.
На этом первая часть урока заканчивается. До новых встреч!
P.S. - В качестве маленького домашнего задания, ответьте на один вопрос: "Почему машинный код называют "байт-кодом"?". В уроке достаточно материала, чтобы ответить на него. Удачи!

Отредактировано Законник (2011-01-16 16:16:55)

0

8

Законник написал(а):

И тоже самое на языке ассемблера: "mov eax, ebx". Видите как цифры заменили на понятные слова?Разберем, что все это значит:"eax" и "ebx" - это регистры процессора. В нашем случае регистры данных (аккумулятор и база).

вот елки, слова то какие http://s61.radikal.ru/i174/1007/3e/1de540a0d735.gif запомнить бы увсе  http://s45.radikal.ru/i107/1007/96/9caddbdb1f51.gif

0

9

Ярило написал(а):

вот елки, слова то какие  запомнить бы увсе

Это запоминать не надо... просто понять и всё... Вам это скорее всего не понадобится для программирования на Паскале, хотя и там можно делать ассемблерные вставки, но об этом много позднее объясню, если вообще понадобится.
Я про это рассказывал, чтобы поняли принцип работы ПК и как это всё развивалось.

0

10

Следующий урок готов, но выложу после того, как кто-то (хоть один) ответит на вопрос поставленный в конце урока. Пугаться не надо, он очень легкий. Хотя бы предположите...

0

11

Законник написал(а):

"Почему машинный код называют "байт-кодом"?".

Потому что в языках программирования вместо машинного кода генерируется интерпретируемый двоичный код «виртуальной машины» 0 и 1 Двоичный код - байт-код.

0

12

Monika написал(а):

Потому что в языках программирования вместо машинного кода генерируется интерпретируемый двоичный код «виртуальной машины» 0 и 1 Двоичный код - байт-код.

Грубо говоря да. В те времена процессоры были восьми разрядными, т.е. могли одновременно обрабатывать только 8 бит, в которые помещались данные в виде нулей и единиц (пример - 01011010). 8 бит = 1 байт. В который можно записать число до 255 или один любой символ.
Но прогресс не стоял на месте и появились 16-ти битные процессоры. Это означает, что регистры данных имели память в 16 бит. Регистр ax делился на две части: старшую (ah) и младшую (al) - каждая занимала 8 бит (1 байт). При программировании можно было работать, как с половинкой отдельно, так и с целым регистром. Это довольно удобно, если вы используете число не превышающее 255, то можно обойтись и половинкой регистра, а не целым, это экономит память и повышает быстродействие программы. Используя 16-ти разрядные регистры и язык ассемблера, можно создавать программы с расширением "com" и использовать их даже на Windows XP, только открываться они будут в DOSе. Это связано с тем, что процессоры делают совместимыми с прошлыми версиями, это так называемая приемственность. Сейчас большинство работает на 32-х разрядных системах. Регистры таких процессоров работают одновременно с 32-я битами. Вот пример названия одного его регистра данных: "eax". Программы у них чаще всего имеют расширение "exe".

0

13

Урок второй.
История языков программирования и принципы работы ПК.
Часть вторая.

Как было сказано в предыдущем уроке, после создания ассемблера всем так или иначе пришлось перейти на него. Причины были довольно просты - бизнес. Уже в ту пору стали писать платные программы, хотя бы для учреждений. Рынок задает темп, а писать на машинном коде очень долго.
Но пришло время и многие осознали, что ассемблер по своему тоже сложен и можно было бы написать языки программирования еще более понятные человеку. Вот тут начался бум. Языки программирования стали появляться один за другим. Так появились С, ADA, FoxPro, Fortran, Basic, Pascal и другие. Некоторые из них были предназначены только для детей, а некоторые и для профессиональных программистов. Вот о них в этом уроке мы и поговорим подробнее.
В середине 50-х годов под руководством Джона Бэкуса для фирмы IBM был разработан алгоритмический язык программирования FORTRAN (FORmula TRANslator). Несмотря на то, что уже существовали разработки языков, выполняющие преобразование арифметических выражений в машинный код, создание языка FORTRAN, предоставляющего возможность записи алгоритма вычислений с использованием условных операторов и операторов ввода/вывода (команды ввода данных с клавиатуры и вывода этих или других данных на дисплей), стало точкой отсчета эры алгоритмических языков программирования.
К языку FORTRAN предъявлялись требования cоздания высокоэффективного кода. Поэтому многие конструкции языка первоначально разрабатывались с учетом архитектуры IBM 407. Успех разработки этого языка привел к тому, что сторонние разработчики других вычислительных систем стали писать свои версии трансляторов (компиляторов) этого языка. FORTRAN IV, разработанный в 1966 году, стал первым стандартом, именуемым FORTRAN 66.
Как альтернатива языку FORTRAN, первоначально ориентированному на архитектуру IBM, под руководством Питера Наура в конце 50-х годов был разработан язык ALGOL (ALGOrithmic Language). Основной целью, разработчиков этого языка, было сделать его независимым от конкретной архитектуры вычислительной системы. Кроме того они стремились разработать язык, удобный для описания алгоритмов и применяющий систему обозначений, близкую к той, что принята в математике.
Допустим, нужно от восьми отнять два.
На ассемблере код этого примера выглядел бы примерно так:

mov al,8 ; загружаем в регистр al число 8
sub al,2 ; отнимаем от данных хранящихся в регистре al число 2. Результат сохраняется в тот же регистр.

Создатели же алгоритмических языков, хотели, чтобы программист писал математическими выражениями:

A = 8;
B = 2;
C = A - B;

Согласитесь, что для начинающих это более понятно.
Языки FORTRAN и ALGOL были первыми языками, ориентированными на программирование вычислений.
Язык PL/I, первые версии которого появились в начале 60-х годов, был первоначально ориентирован на IBM 360 и расширял возможности языка FORTRAN некоторыми средствами языка COBOL, разработанного в эти же годы. Несмотря на определенную популярность языка PL/I у программистов, работавших на компьютерах IBM и машинах серии ЕС, в настоящее время он представляет чисто теоретический интерес.
В конце 60-х годов под руководством Найарда и Дала был разработан язык Simula-67, использующий концепцию пользовательских типов данных (о том, что это такое, вы узнаете на уроках по языку Паскаль). Фактически это первый язык, применяющий понятие классов.
Создателями языка Basic были John George Kemeny и Тоm Kurtz, работавшие в Дортмундском колледже в 1964 году. Собственно, как и Pascal, Basic был предназначен для обучения студентов.
Возможно, это и повлияло на то, что два человека, теперь широко известных, Пол Аллен и Уильям Гейтс в далеком 1975 году начали разрабатывать интерпретатор Бейсика для персонального компьютера Altair, основав в дальнейшем компанию Microsoft, ставшую одной из крупнейших компьютерных империй. В те далекие годы Basic стал первым продуктом, выпущенным этой компанией.
На этом история Бейсика, однако, не заканчивается. Он был успешно перенесен на другие компьютеры, такие как Apple, Commodore и Atari. Затем интерпретатор был написан для только что появившегося компьютера IBM PC. Он не только поставлялся как программа, но и зашивался в ПЗУ компьютера. Многие ветераны, возможно, еще помнят времена, когда после включения машины даже при отсутствии винчестера или дискет можно было писать программы на встроенном Бейсике (У нас в школе было два таких "ПК" - мои комментарии).
В середине 70-х годов Вирт предложил язык Pascal, который сразу стал широко использоваться. В это же время по инициативе Министерства обороны США началась работа по созданию языка высокого уровня Ada, названного в честь Ады Лавлейс, программистки и дочери лорда Байрона. Над проектом работали четыре независимые группы, но все они использовали как основу язык Pascal. В начале 80-х годов был разработан первый промышленный компилятор языка Ada.
Универсальный язык программирования С (Си) был разработан в середине 70-х годов Денисом Ритчи и Кеном Томпсоном. Этот язык стал популярным языком системного программирования и в свое время использовался для написания ядра операционной системы UNIX. Стандарт языка С начал разрабатываться рабочей группой института стандартов ANSI в 1982 году. Международный стандарт ISO языка С принят в 1990 году. Язык С лег в основу разработки языков программирования C++ и Java, которые актуальны и сейчас, более того, они являются одними из основных языков программирования на данный момент.
Наряду с алгоритмическими языками параллельно развивались и языки, предназначаемые для обработки деловой информации, а также языки искусственного интеллекта. К первым относится язык COBOL (COmmon Business Oriented Language), а ко вторым – языки LISP (LISt Processing) и Prolog. Язык LISP, разработанный в 60-х годах под руководством Дж. Маккарти, был первым функциональным языком обработки списков, который нашел широкое применение в теории игр.
С появлением персональных компьютеров языки стали составными частями интегрированных сред разработки. Появились языки, применяемые в различных офисных программах, например VBA (Visual Basic for Application).
В середине 80-х годов им был реализован QuickBasic (последняя версия 4.5). Это полностью компилируемый язык, с нормальными структурными конструкциями, пользовательскими типами данных, причем еще и совместимый со старыми версиями (Basic и GW Basic). По тем временам это был большой шаг вперед Basic стало возможным использовать наравне с Pascal или С.
В 90-х годах с распространением сети Интернет расширяется возможность распределенной обработки данных, что отражается и на развитии языков программирования. Появляются языки, ориентированные на создание серверных приложений, такие как Java, Perl и PHP, языки описания документов – HTML и XML. Традиционные языки программирования С++ и Pascal также претерпевают изменения: под языком программирования начинает пониматься не только функциональность самого языка, а также библиотеки классов, предоставляемые средой программирования (частично об этом мы поговорим при изучении Паскаля).
Области применения языков программирования:
В настоящее время языки программирования применяются в самых различных областях человеческой деятельности, таких как:
научные вычисления (языки C++, FORTRAN, Java);
системное программирование (языки C++, Java);
обработка информации (языки C++, COBOL, Java);
искусственный интеллект (LISP, Prolog);
издательская деятельность (Postscript, TeX);
удаленная обработка информации (Perl, PHP, Java, C++);
описание документов (HTML, XML).
С течением времени одни языки развивались, приобретали новые черты и остались востребованы, другие утратили свою актуальность и сегодня представляют в лучшем случае чисто теоретический интерес, являясь уже "мертвыми" языками.

0

14

текст удален, чтоб не ущемлять ничьё самолюбие

Отредактировано Йокки (2011-01-20 09:54:24)

0

15

Йокки
А зачем всё это писать в одном уроке? Уровень восприятия у всех разный. Вы никогда не наблюдали за студентами или просто школьниками, когда им объясняют что такое блок-схемы? Вот этим смайликом всего не передать... А тема то пустиковая! Но больше половины класса сидят и ничего не понимают, у них на лицах сперва идет череда задумчивости, удивления, страха и в конце наступает полная прострация... Чтобы преподаватель ни говорил или спрашивал, они не просто не отвечают, а перестают как либо реагировать, будто их тут и нет. Прям зомби под гипнозом. Я раза три такое наблюдал. Довольно смешно было.
Поэтому мешать всё в одну кучу я не не собираюсь, равно как и писать большие талмуды. В интернете вообще мало народу читают километровые сообщения на форумах. К тому же это всего лишь краткий обзор и он не подразумевает описывать всю конкурентную борьбу фирм разработчиков, которая напоминает зону военных действий. Если это делать, то пришлось бы описывать ни только технические отличия всех продуктов этих фирм, но и историю версий каждого продукта в отдельности. Плюс порой в лидеры выбивались не те у кого продукт лучше, а кто как себя рекламировал и продвигал. Пришлось бы осветить все их маркединговые и вообще экономические ходы связанные с той или иной их разработкой. В результате получилась бы целая книга интересная единицам. Так что не вижу смысла это делать.
Я не даром разделил уроки на части. В следующей части поговорим и о Делфи и иже с ним. Я современные средства разработки ПО и баз данных оставил на закуску. Не всё сразу.

0

16

ЗАКОННИК написал(а):

Вы никогда не наблюдали за студентами или просто школьниками, когда им объясняют что такое блок-схемы?

Во-во, это про меня в какой то мере, прошу вас , обьясните подробней, я буду благодарным читателем! http://s45.radikal.ru/i110/1007/c8/ffcf331f2461.gif 

ЗАКОННИК написал(а):

А это кто?

Нортонов много, знаю даже артиста Нортона )) но в данном случае полагаю , речь идет  о системе защиты компа?http://s011.radikal.ru/i318/1011/19/c98661d14222.gif (хотя , есть еще парочка Нортонов, ну с какого бока их приставить к теме компов пока для меня загадка...

0

17

MARGO написал(а):

рошу вас , обьясните подробней, я буду благодарным читателем!

Что именно объяснить? Если блок-схемы, то это через пару-тройку уроков только будет...

0

18

Ой, как все интересно. http://s50.radikal.ru/i127/1007/8a/d1f1990eef57.gif  http://s006.radikal.ru/i213/1101/f5/57d840b692e4.gif

0

19

Законник написал(а):

Если блок-схемы, то это через пару-тройку уроков только будет...

Ок, ждем...пока что хватает информации-усвоить бы еще.. http://i062.radikal.ru/1007/11/57ed037cebad.gif

0

20

текст удален, чтоб не ущемлять ничьё самолюбие

Отредактировано Йокки (2011-01-20 09:56:07)

0


Вы здесь » Lilitochka-club » Введение в программирование » Введение в программирование


Рейтинг форумов | Создать форум бесплатно © 2007–2017 «QuadroSystems» LLC