Б С Бусигін - Прикладна інформатика - страница 2

Страницы:
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83 

Одне з можливих уявлень перехрещення і взаємодії найбільш великих сучасних комп'ютерних напрямів2 наведено на рисунку 1. Безсумнівно, що один з найбільш містких секторів ринку комп'ютерних технологій належить інформаційним системам, які працюють у корпоративному просторі та спираються на наукові розробки (CS), програмну інженерію (SE) і апаратну технологічну базу (CE).

Не буде перебільшенням сказати, що переважна частина тем інформатики базується на

використанні тих чи інших мов програмування, як виключно можливим інструменті управління різноманітними компонентами складних багаторівневих комп'ютерних систем, а також інформаційним контентом. І хоч ринок програмних продуктів постійно поповнюється все новими і новими додатками, покрити поле інтересів користувачів вони поки ще не в змозі.

На початкових етапах засвоєння їх можливостей, як правило, користувач застосовує інструменти стандартного інтерфейсу додатків (API), а потім, засвоїв головні функції, починає використовувати вбудовану мову системи

Рис. 1. Перехрещення деяких комп'ютерних галузей: Computer Science (CS), Software Engineering (SE), Information System (IS), Computer Engineering (CE)

2 Training Course SE MSF.NET / V. Pavlov, M. Boyko, D. Malenko, O. Biloborod'ko // .NET Technologies'2004 workshop proceedings. Copyright UNIAN Agency - Science Press, Plzen, Czech Republic. -.5 p.

(типу Visual Basic for Application). І дійсно, навряд чи Вас надовго захопить процес використання чужих програм (доречи, і їх хтось створював у свій час!). А ще більшу незадоволеність викликає необхідність додержуватися багато чисельних керівництв для «чайників», постійно виконуючи рекомендації типу: «Підведіть курсор миші до меню вікна додатку, виберіть потрібну команду і клацніть лівою кнопкою миші ОК!». І неминуче наступить момент, коли Вам самому захочеться направити хід дій комп'ютера на свій розсуд. А це і будуть Ваші перші кроки у програмуванні и у програмування.

Але, перед тим, як входити до цієї таємничої і захоплюючої галузі людської діяльності, замислитесь над словами академіка А.П. Єршова (рис. 2), які він висловив на Об'єднаній обчислювальній конференції Американської федерації суспільств з обробки інформації в місті Атлантик-Сіті (США) ще у 1972 р., у своєму виступу під назвою «О людським і естетичнім факторах в програмуванні»: «Програмування стає масовою професією. Однак потрібно мати на увазі, що зараз це, мабуть, сама трудна з усіх масових професій, причому, нажаль, ця трудність ще не визнана у повній мірі».

Ця трудність полягає у тому, що саме програмісти безпосередньо впираються у межі людського пізнання у виді алгоритмічно не розв'язуваних проблем і глибоких таємниць роботи головного мозку.

Трудність полягає ще і у тому, що власний стек програміста повинен бути не у 56 позицій глибини, як це виявили психологи у середньої людини, а той же глибини, що і стек у його черговій задачі, яка підлягає програмуванню, плюс ще як мінімум дві-три позиції.

Трудність програмування полягає також і у тому, що програміст повинен володіти здібністю першокласного математика до абстракції і логічного мислення у поєднанні з "едісонівським" талантом споруджати все, що завгодно, тільки з нуля та одиниці. Він повинен поєднувати акуратність бухгалтера з проникливістю розвідника, фантазію автора детективних романів з тверезою практичністю економіста. А, крім того, програміст повинен мати смак (рос.-вкус) до колективної праці, розуміти інтереси користувача і багато, багато іншого».

Це один бік проблеми, але є ще і другий. А.П. Єршов звернув увагу присутніх на дуже важливий аспект, пов'язаний з проблемами програмування: «У час мого перебування в 1970 р. у Сполучених Штатах на мене призвели дуже велике враження нові ідеї професорів Масачусетського технологічного інституту Марвіна Мінського і Сеймура Пейперта в галузі навчання дітей. Вони викинули у корзину ходяче уявлення про те, що діти вчаться несвідомо методом наслідування (рос.-подражания). Мінський і Пейперт доказують, що

Рис. 2. Андрій Петрович Єршов (1931-1988), радянський математик, академік АН СРСР (зліва) и Джон МакКарті (батько мови Лісп, США)людина чомусь навчається тільки у тому разі, коли у нього в голові складається блок-схема дій, виділені підпрограми і прокладені інформаційні зв'язки. Професор Пейперт назавжди обернув (рос.-обратил) мене в свою віру на прикладі жонглювання двома м'ячами, коли, апелюючи до моїх здатностей програміста, він за десять хвилин навчив мене тому, що я сам не зробив би і за декілька часів. Таким чином, людина незмірно посилить інтелект, якщо зробить частиною своєї істоти спроможність планувати свої дії, виробляти загальні правила и засіб їх застосування до конкретної ситуації, організовувати ці правила у осознану і висловлювану структуру, - одним словом, зробиться програмістом.

Творча і конструктивна природа програмування не потребує особливих доказів. В своїй творчій природі воно йде набагато далі більшості інших професій, наближаючись до математики і письменництва. В більшості інших професій ми лише «приручаємо» за допомогою сил природи ті або інші фізичні чи біологічні явища, не обов'язково осягаючи їх сутність. В програмуванні ж ми у деякому сенсі йдемо до кінця. Один з тезисів сучасної теорії пізнання: «ми знаємо щось, якщо можемо це запрограмувати» - дуже опукло характеризує цей максималізм програмування.

У цьому і полягає фундаментальна роль головних понять інформатики у формуванні здібностей і інтелекту сучасної людини і у витікаючої з цієї ролі необхідності впровадження комп'ютерів в учбовий процес».

І якщо після цього Ви ще не передумали займатися програмуванням, то перед Вами постане питання: «За допомогою якої книги и яку мову програмування вивчати»? Відповідь неоднозначна, але, на щастя, може бути «розкладена на складові». Умовно його можна розбити на три частини.

1. В принципі, програмувати можна на будь якій мові програмування. У класичній роботі Бома и Джакопіні (надрукована в журналі Communications of

the ACM у травні 1966 р.) було показано, що для програми, у якій усякий модуль проектувався з єдиним входом і єдиним виходом, а сама програма є множиною вкладених модулів, кожний з яких також має один вхід и один вихід, остання може бути реалізована в мові, яка включає тільки дві головні управляючі конструкції. Фактична реалізація цих конструкцій може бути різною у різних мовах програмування. Принцип, який викладено в статті Бома и Джакопіні, зветься «структурною теоремою», має фундаментальне значення і складає основу більшості реалізацій алгоритмів при проектуванні програм.

По Бому и Джакопіні для побудови програми потребується три головних складових блока (рис.З): О функціональний    блок    або лінійна послідовність операторів;

© умовний        оператор (конструкція

7

Рис. З. Три головних блока в програміприйняття двоїчного або дихотомічного рішення);

© конструкція узагальненого циклу (цикл з параметром, з передумовою, з постумовою і т.д.).

Тоді для усякої програми, складеної з вказаних конструкцій, завжди може бути отриманим ще й доказ її коректності!

2. Якщо Ви маєте намір зразу ж вирішувати конкретні задачі у конкретній організації, то при обранні мови програмування, необхідно (і прийдеться!) враховувати масу факторів: накопичений досвід організації, специфіку задачі, яка вирішується, апаратне забезпечення, яке існує у цій організації, наявність ліцензійних програмних продуктів, встановлений термін виконання проекту і т.д., що і дозволяє вже обрати конкретну мову програмування.

3. Але, якщо Ви вирішили засвоїти систематичний і науковий підхід до програмування, тобто навчитися реалізовувати великі програми зі складними даними, то, безсумнівно, Вам потрібно починати з мови Турбо Паскаль.

Сама мова Паскаль з'явилася в м. Цюріх у «Школі програмування», на чолі котрої стоїть Ніклаус Вірт (1968-1999 pp. - професор інформатики в університеті м. Цюріх, Швейцарія) (рис. 4), який узагальнив свій багаторічний авторський досвід навчання програмуванню. Створений спеціально з педагогічними цілями Паскаль оказався дуже вдалим не тільки в силу того, що йому просто навчатися, але й як основа обговорення мов програмування взагалі. Мова проектувалася з врахуванням спрощення написання відповідного транслятора, а опис Паскалю, який займає біля ЗО сторінок тексту, уявляє собою яскравий приклад систематичного и наукового підходу до навчання побудови програм. Для порівняння спробуйте зазирнути в книгу Б'ерна Страуструпа з описом мови C++ і, як говориться, відчуйте різницю!

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

Array[1..N]   of Real,

Рис. 4. Ніклаус Вірт перед тренувальним вилітом на бойовому винищувачі

Ви далі впізнаєте, що конструкція 1.. N уявляє собою обмежений тип і може бути далі уявлена самостійним ідентифікатором (ім'ям чи назвою), наприклад Border. І тоді той же опис буде виглядати так:

Array[Border]   of Real. 13

Повільний перехід від простих (тобто базових для усіх мов програмування!) типів даних до складових (рос.-составных), а потім і до об'єктних (що зовсім не важко!) дозволяє навчитися легко переміщатися по рівням абстракцій, що є головним в програмуванні. Це повинно дозволити Вам програмувати або швидко навчитися програмувати практично майже на любій з головних мов програмування, котрі прийдеться використовувати в майбутньому на робочому місці.

Важливо підкреслити, що у програмуванні, на відміну від математики, немає формул, підставив до яких деякі початкові дані можна отримати гарантований результат. Але тут є звісний набір прийомів и прикладів їх використання. Фрагменти коду і приклади програм, звичайно, можуть багато чому навчити, але не слід забувати і про можливості направляти хід думок програміста, тобто пропонувати йому вже апробовані алгоритми проектування програм и проектування алгоритмів. Тим більш, що відомий у усьому світі Дональд Кнут (США) (рис. 5) розробив і надрукував аж три томи найбільш ужитих (рос. -употребительных) обчислювальних алгоритмів. Таким чином у основі програмування лежить творчий акт і основною задачею при навчанні є розвиток здібностей людини творчо мислити. І тут потрібно не стільки розповідати, скільки показувати, як робиться «те» чи «інше». На цьому шляху велику роль грає вибір матеріалу і підбір прикладів, у котрих підкреслюються основоположні принципи програмування.

Як витончено підмітив Н. Вірт: «Програмування - це мистецтво конструювання». Звичайно, навчити конструкторській або винахідницький діяльності досить важко. Але можна скористуватися старим як світ способом. Подібно до того, як дитина вчиться говорити, складаючи з літер (рос.-букв) слова, а з слів - речення, програміст «складає» алгоритми програмних модулів, з програми, а з програм

«Входження» у Паскаль суттєво полегшується присутністю компактного інтегрованого середовища програмув­ання Турбо Паскаль (ТП). Ще однією з причин почати свої перші кроки у

Рис. 5. Професор комп'ютерних

наук Дональд Кнут, який розробив і надрукував три томи

книжок з обчислювальними алгоритмами для комп'ютерів.

модулів системи 4...

Професор Комп'ютерних наук Стендфордського університету (США), володар премії Т'юринга у 1974 р., член Британського комп'ютерного товариства з 1980 р., Почесний член організації IEEE з 1982 р. Член Американської академії Мистецьтва і Науки, Національної Американської Академії Наук, Національної Американської Інженерної Академії, закордонних академій: Французьської Академії наук (l'Acadёmie des Sciences (Paris)) і Норвезьської Наукової академії (Det Norske Videnskaps-Akademi (Oslo)). Надрукував 160 статей і 19 книг, має багато наукових і державних нагород різних держав світу, є почесним професором Оксфордського, Паризького і Петербурзького університетів, а также багатьох коледжей світу. 4 Бортове програмне забезпечення (ПЗ) усіх російських супутників зв'язку пишеться на мові Модула-2, розробленой Н.Віртом в 1979 р. після створення мови Паскаль в 1970 р.програмуванні на Турбо Паскалі, є його багатофункціональне середовище розробки, котре уключає текстовий редактор для уводу програм, дбайливий компілятор, який у випадку присутності помилки в тексті Вашої програми, встановлює курсор у цьому місці і повідомляє про номер і назву цієї помилки, а також дебаггер, тобто засіб налагоджування програм (рос.-отладчик), котрий дозволяє досліджувати створені Вами програми. Простота його використання дозволить Вам зосередитися на головних тонкостях програмування на відміну від монстроподібних систем швидкої розробки програм, вивчення можливостей яких потребує окремих (а іноді і напружених) зусиль. Краще за усе цю ситуацію ілюструє історія, що приведена Джозефом Фоксом у його книзі «Программное обеспечение и его разработка»: «Коли на початку 1970-х рр. ми успішно завершили першу робочу версію нової програмної системи управління повітряними перевезеннями, ми відчули почуття величезного задоволення (при цьому група з 500-т програмістів працювала над її створенням 7 років).

Система була відправлена в Джексонвілл, шт. Флоріда, для випробувань в робочих умовах в нічну зміну в Центрі управління авіаперевезеннями. Однак диспетчери з Джексонвилла відмовились користуватися нею - вони заявили, що вона «ненадійна».

«Ненадійність» диспетчерської авіаслужби потребує особливої уваги. Нам вдалося вирішити цю проблему виключенням із складу системи значної частини

функцій, котрі були уключені до неї. Наступний варіант програми, який було поставлено у Джексонвіллі, містив значно менше системних можливостей. І диспетчерам він сподобався. А потім поступово, дуже повільно ми почали додавати функції, які вже були запрограмовані і протестовані нами раніш.

Зрозуміло, що якщо Вам запропонують пуд морозива, важко очікувати, що Ви зможете проковтнути його за один прийом. Це не вийде».

Можливо, Вам буде цікаво узнати, що автори цієї книги за своє життя «впізнали» усі принадності (рос.-прелести) програмістського ремесла. Ще на студентській лаві у 1970 р. прийшлося програмувати в машинних кодах для електронної обчислювальної машини (ЕОМ) «Урал-1». На переддипломній практиці в Інституті кібернетики АН УРСР ім. академіка Глушкова програмували в кодах трьох адресної машини М-220. Навчаючись у аспірантурі і потім, продовжуючи там же подальшу працю, програмували для ЕОМ БЭСМ-6 на мовах Алгол, Фортран і Автокоді «Мадлен», а для ЕС ЕОМ (лінія IBM, рис.6) - на мовах PL/1, Fortran і Assembler. Вже у епоху розповсюдження комп'ютерів IBM PC, працюючи у вищих навчальних закладах (ВНЗ), програмували на мовах Турбо Паскаль, Quick Basic, Пролог, Асемблер, Лісп. Поточним часом перевагу віддають мовам Турбо Паскаль, С++, Visual Basic for Application,

Рис. 6. Комп'ютер IBM System/360, 1974 р.

Python. Вищевказаний мовний слалом «вивірив і розмітив» сам процес розвитку інформаційних технологій, а аж ніяк не ексцентричність у обранні підходу до вивчення деякої серії таких мов.

Ідея створення цього підручника виникла в процесі спілкування авторів з викладачами і студентами Національного гірничого університету, а також вчителями і школярами Регіональних учбових центрів НГУ у мм. Павлограді, Комсомольську, Олександрії і Дніпрорудному. Досвід цих зустрічей посвідчує, що, незважаючи на існування великої кількості навчальних книг і спеціальної літератури з інформатики, вивчення мови програмування у відриві від історії появи персональних комп'ютерів (ПК), головних тенденцій розвитку інформаційних технологій і зміни парадигми створення програм, виходить дуже «плоским». Крім того, звісно, що спеціалісти, які освоювали в студентські роки навчальний курс «з малюнками» і «без малюнків», як правило принципово відрізняються в подальшому один від одного по стилю мислення. Тому автори приділили особливу увагу підкріпленню викладення матеріалу ілюстративними матеріалами.

Слід також мати на увазі,

що      певну трагікомічність

ситуації з навчанням

інформатиці    на початкових

курсах ВНЗ придає той факт, що

персональний комп'ютер

практично     перетворився у

багатьох   сім'ях  у настільний

побутовий       пристрій для

підтримки дитячих ігор (рис. 7),

а        простота інсталяції

операційної     системи (ОС)

Windows (спасибі Біллу Гейтсу

та   його   команді!) дозволяє Рис. 7.

"юним        талантам (рос.-Фрагмент з мультимедійної гри дарованиям)" самостійно

встановлювати цю ОС на ПК, а потім с легкістю користуватися всілякими ігровими, Інтернет - і мультімедійними програмами, що у простих (і не дуже) користувачів породжує ейфорію повного володіння інформаційними технологіями. Але одне діло освоювати майже за десять хвилин програми, котрі і створювалися у розрахунку на їх максимальну дружність непідготовленому користувачу, а зовсім інше - проектувати й розробляти такі програми...

Головна частина популярної (і дуже потрібної!) літератури по оволодінню комп'ютерною грамотністю націлена на опис апаратних, програмних і мовних компонентів комп'ютерних систем. Стрімкий їх розвиток швидко «робить старим» матеріал, який у неї викладається. Тому у підручнику, що пропонується, особливу увагу було приділено висвітленню ряду питань, котрі, на думку авторів, з одного боку слабко відображаються у відомій літературі, а зіншого боку - відносяться до розряду фундаментальних (тобто тих, які не старіють).

Наприклад, просте питання: «А що діється у процесі включення комп'ютера?» - викликає велике збентеження (рос.-замешательство) і становить у тупик багатьох юних комп'ютерщиків. Тому автори прийняли рішення заглянути усередину персонального комп'ютера і спорядили (рос.-снабдили) книгу докладним (рос.-подробным) глосарієм, який містить більш ніж 1000-і термінів з галузі комп'ютерних технологій, без якого багато речей зникають з поля зору при вивченні глибин і основ інформатики.

І до цього часу продовжується бурхлива полеміка про те, «що» і «як» потрібно у першу чергу викладати в інформаційних курсах (див. Додаток 1), тому на наш погляд тема ця невичерпна. Якщо ж казати у цілому про ціль даного підручника, то окрім безпосередніх задач навчання програмуванню автори прагнули показати становлення інформатики не як щось «дане згори (рос. -свыше)», а як боротьбу ідей, котрі висували і відстоювали живі й безсумнівно надзвичайно талановиті люди.

Звичайно, ряд глав можуть здатися при першому читанні досить складними для початківців. Попервах їх можна пропустити і перейти безпосередньо до теми, яка висвітлює особливості мови Турбо Паскаль. Але, повертаючи знов і знов до не у всьому зрозумілих глав, Ви переконаєтесь у тому, що багато речей не такі трудні, як це здається на перший погляд. Їх потрібно засвоїти тому, що на думку провідних закордонних фахівців, головною професійною функцією спеціалістів комп'ютерних напрямів на сучасному етапі є управління змінами у інфраструктурі інформаційних систем.

складають фольклор професії.

Без цього фольклору важко бува зрозуміти багато тонкостей ремесла програміста. Сподіваємось, що вони визвуть і у читачів відповідний інтерес.

Рис. 8. Самий перший переносний персональний комп'ютер, створений у

1981 р. у вигляді чемодану, який випускала фірма Osborne Computers (США). Вага у зібраному вигляді 10 кг.

Оскільки цей підручник не є монографією, посилання на літературу у тексті не наводилися, а список літератури до вступу знаходиться у його кінці. За невеликим виключенням, у більшості своїй, це улюблені книги авторів, котрі хочеться перечитувати неодноразово. Не дивлячись на відносну молодість інформатики як науки, в ній вже є свої класики. Їхні книги написані живою і образною мовою, вони повні реальних програмістських історій, котрі

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

Підручник, що пропонується, починається розділом про історію народження персонального комп'ютера з декількох причин (рис.8). По-перше, ми вважаємо її вельми захоплюючою (рос. -увлекательной) і корисною для входження до атмосфери стрімкого розвитку комп'ютерних технологій, де розділ про процес включення ПК служить містком до розуміння складності вирішених при цьому задач і поводом углибитися у фундаментальні питання обробки даних і командної основи роботи комп'ютера. По-друге, акцент скрізь робиться на фокусуванні Вашої уваги на точні формулювання в сфері існуючого різноманіття у визначенні багатьох термінів, велика кількість яких викликала появу багатьох комп'ютерних словників і Web-сайтів, що тлумачать багаточисельні неологізми, котрі з'являються лавино подібно...

Знання і уявлення значень постійно виникаючих термінів потрібно в першу чергу тому, що як заявив керівник японських програмістів на однієї з конференцій у 1977 р.: «Найбільш важливою мовою, котру потрібно знати програмісту, є не JCL або ПЛ/1, а японська мова». Коментарі, як говориться, зайві! (Хоча знання, в тому числі і мови UML аж ніяк не завадять    (рос.-не помешают)

(рис.9)).

У другому розділі описуються головні тенденції у розвитку інформаційних технологій и у

фундаментальних уявленнях, що до них відносяться. Вам пропонується зануритися (рос. -погрузиться) в глибини різноманіття понять інтерфейсу і розглянути, як він мінявся від DOS до Windows.

Страницы:
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83 


Похожие статьи

Б С Бусигін - Прикладна інформатика