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

Страницы:
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 

Риса     І С++ І Java | C#

Управління системними ресурсами

Виділення і звільнення пам'яті вручну, з використанням спеціальних операторів

Автоматичний «збір сміття (рос.-мусора)»

Продуктив­ність труда програмістів

Невелике число високорівневих механізмів

Добре структуровані визначення структур даних   і оператори передачі управління

Розширений словник визначених типів даних; Підвищена   гнучкість у передачі управління

Надійність ПЗ

Обмежені можливості контролю типів; незручні і часто ігноруємі програмами механізми обробки помилок

Жорсткий   контроль  типів  дозволяє уникнути помилок   з   непередбаченим перевизначенням операцій; механізми обробки виняткових ситуацій дозволяє        обробляти        помилки тільки структурованим образом

Продуктив­ність додатків

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

Покажчики не використовуються; процедури перетворення типа поміж об'єктами і примітивними типами бувають порой достатньо незграбні

Використання покажчиків можливо, але   тільки   у коді, поміченому

спеціальним ярликом "unsafe"; ефективне перетворення типів об'єктів   і   значень з використанням механізму «боксів»

Переноси-

мість

додатків

Компіляція у платформено-незалежний код

Компіляція в універсальний байт-код, придатний (рос.-пригодный) для використання   на аби який платформі, оснащеною віртуальною тауа-машиною

Компіляція у код .Net Intermediate Language

Слід додати, що у рамках концепції створення всесвітньої архітектури використання Web-сервісів - .Net (дот нет), яку розвиває Microsoft, цієюкорпорацією реалізовано ціле сімейство продуктів розробки з відповідними мовами: Visual Basic .NET 2003, Visual C# .NET 2003, Visual C++ .NET 2003,Visual J# .NET 2003 і планується продовжувати ці роботи.

5.3. Деякі можливі порівняння

Разом з тим, до сих пір спеціалістами дебатуються питання ефективності і глобальності з точки зору широти спектра проблем, що покриваються тою чи іншою мовою програмування. На цьому фоні Міжнародна Комісія у складі

2 3

членів комітетів по освіті організацій IEEE-CS и ACM прийшли до думки (рос. -мнению), що спеціалістам у області інформатики на початковому етапі необхідно знання не менш двох мов. При цьому, багато хто з експертів схиляється до думки, що освоєння мов природніше призводити, починаючи з більш простої, до якої як раз і відноситься Turbo Pascal (див. далі табл. 5.7).

Чим же «вимірюється» складність мови? Крім стильових і концептуальних особливостей, що пов'язані з галуззю його використання, у більшості мов присутній так званий лексемний рівень. Лексеми подають (рос.-представляют) мінімальні одиниці мови, які мають значення у його структурі: ідентифікатори, буквені константи, знаки операцій (оператори) і розподілювачі. В мовах процедурного напряму велике значення мають операції: арифметичні (+, -, *, /), порівняння, логічні і ряд інших. У деяких мовах їх йменують операторами або функціями. У складних виразах з їх участю необхідно враховувати пріоритет кожної з операцій. У приведеному нижче операторі привласнення мови Турбо Паскаль спочатку буде виконана операція ділення (/), яка має більш високий пріоритет, а потім результат відніметься з числа 20:

R := 20-8/4

У таблиці 5.7 приведені співвідношення кількості операцій и рівнів їх пріоритету у деяких популярних мовах програмування.

З таблиці слідує, що найбільш «легкими», тобто ті що мають відносно невелику кількість операцій і рівнів приоритету, а також з точки зору простоти засвоєння можливостей мови є Turbo Pascal і Visual Basic. Однак, з точки зору об'ємів засобів підтримки, які включають опис мови і безпосередньо середовище розробки IDE, Turbo Pascal зостається неперевершеним до сих пір. Крім того, у основі любого мови програмування лежать принципи організації структур даних і, як правило, деякий набір операторів мови. Засвоїв принципи їх використання на базі мови Turbo Pascal, можна застосовувати ці знання для вивчення інших мов, які безпосередньо відносяться до сфери професійної діяльності.

2 Institute of Electrical and Electronics Engineers-Computer Science - Інститут інженерів з електротехніки і електроніки-комп'ютерні науки.

3 Association for Computing Machinery - Асоціація з обчислювальної технікі.

Таблиця 5.7.

Порівняльна таблиця деяких характеристик мов програмування_

Назва мови програмування

Кількість операцій/

Кількість рівнів пріоритету

(МП)

операторів (типу +, -, *, /, >, < і т.д.)

операцій/ операторів

Turbo Pascal

20

4

Visual Basic

14

4

VBA (Visual Basic For Application)

23

4

VBScript

23

9

Java

44

10

Java Script

48

14

C++

52

18

Perl

64

17

Вже здавна триває полеміка серед спеціалістів щодо порівняння мов Turbo Pascal та С++ (яка по деяким даним входить у число трьох найбільш популярних на мировому рівні мов програмування разом з VB і Java), тому є інтерес відмітити деякі особливості мови С++. Суттєва направленість мови С++ на роботу з апаратурою і компонентами персональних комп'ютерів забезпечується 52-мя операторами роботи з даними, які об'єднані у 18 груп різного пріоритету. Сюди, доречи, входять постфіксні і префіксні інкременти (++) і декременти (--), оператори присвоювання: з множенням (*=), діленням (/=), діленням по модулю (%=), сумою (+=), різністю (-=), зсувом уліво (<<=) і зсувом вправо (>>=). Сюди ж входять побітові операції: І (&), АБО ( | ), побітове, що виключає АБО ( А ), логічні І (&&) і АБО ( || ), тернарна операція (?) і багато інших. У той же час у мові Turbo Pascal 7.0 використовується усього 20 операцій роботи з даними, які об'єднані у 4 групи за пріоритетами виконання, що усього у чотири рази менш за кількість пріоритетів у мові С++ (!!!).

У алгоритмічних мовах програма - це "алгоритми + структури даних"".

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

Надзвичайно важливим уявляється також той факт, що мова С++ є суттєво об'єктно-орієнтованою і визначально припускає у того, хто її вивчає чітке уявлення про ОО принципи, які уключають наступні фундаментальні поняття: ОБ'ЄКТ, ПОВІДОМЛЕННЯ, КЛАС, НАСЛІДУВАННЯ І МЕТОД. У контексті мови постійно і широко використовуються принципи, які лежать в основі об'єктної моделі уявлення систем, які програмно моделюються: абстрагування, інкапсуляція, поліморфізм, модульність, ієрархічність, типізація, паралелізм і збереженість    (рос.-сохраняемость).    Механізмами    реалізації вказанихабстракцій є віртуальні і не віртуальні функції, функції і методи, які перевантажуються, функції-члени базових класів і їх об'єкти, потоки, буфера і їх класи, шаблони, які об'являють параметризовані класи масивів, класи і екземпляри шаблонів і т.д. білими словами, алгоритмічна складова у цієї мові служить основою реалізації методів об'єктів, при вельми високої ступені абстракції уявлення елементів ієрархічної структури організації взаємодії абстрактних даних у вигляді базових і віртуальних класів систем, що реалізуються і об'єктів, що ними породжуються. Все це робить мову С++ достатньо складною для засвоєння.

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

Можна назвати як мінімум три десятка мов, котрі відіграли помітну роль у розвитку програмування, але все ж тільки три нари — Алголі і Фортран, Паскаль і С, Java і С++ — стали найбільш яскравими, найбільш помітними на комп'ютерному небосхилі.

Говорячи про відведене (рос.-отстранённое) і упереджене (рос.-предвзятое) відношення людей до «чужих» мов, Ніклаус Вірт, автор мови Паскаль відмічав: «Багато хто відноситься до стилів і мов програмування, як до релігійних конфесій: якщо ви належите до однієї з них, то вже не можете належати до іншої. Але це неправильна аналогія, і вона свідомо підтримується по причинам комерційного порядку».

Опонент Ніклауса Вірта — Денніс Рітчі— недавно відмітив: «Паскаль — дуже елегантна мова. Вона до сих пір жива. Вона породила чимало своїх послідовників і зробила (рос.-оказала) глибоке діяння (рос.-воздействие) на проектування інших мов».

У інтерв'ю, яке було дане 21.G2.2GG1 системному аналітику Денні Калєву (Danny Kalev), творець одної з найбільш поширених мов програмування C++, Б'єрн Страуструп сказав наступне:

«Багато чого у програмуванні краще зробити методами, котрі не містяться всередині вузької смуги (рос.-полоски) методів, що іменуються "об'єктно-орієнтованими". I якщо Ви не виходите за границю "об'єктно-орієнтованих" методів, щоб зостатися у рамках "доброго (рос.-хорошего) програмування і проектування", Ви отримаєте дещо, що є у цілому безглуздим (рос.-бессмысленным). Майбутнє за мультіпарадигматичним програмуванням».

Далі Б'єрн Страуструп додав:

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

Не дивно, що продовжують жити багато старих добрих мов: Fortran, COBOL, Ada та інші. Зокрема, в червні 2001 року фірма COMPAQ випустила на ринок інтегроване візуальне середовище розробки з оптімізуючим компілятором Compaq Visual Fortran 6.6 (рис. 5.5).

Рис. 5.5. CD с компілятором Compaq Visual Fortran 6.6

У проведеному в 2001 році дослідженні була зроблена оцінка програмного забезпечення, що відноситься до так званих "відкритих кодів" (Open Source) і розташоване на європейському сайті «The Site for Libre Software Developers [http://libre.act-europe.fr/]. Оказалося, що у комплексі досліджуваних програмних розробок, що займали у запакованому вигляді простір на диску більш ніж 1 гігабайт і число розробників котрих з 41-єї країни перевищує 5300 особистостей, мови програмування, які всі вони використовували розподілилися наступним чином (рис. 5.6).

З нього витікає, що більшість професійних програмістів володіють мовами С і С++, але використовують у своїй роботі і мову Паскаль.

Це і не дивно, бо мова Паскаль, яка створена у 1968 р. Ніклаусом Віртом, розроблялася визначально для навчання написанню надійних програм з розвинутою системою даних і є учбовою мовою високого рівня, для котрої у 1982 року була створено унікальне інтегроване середовище розробки Turbo Pascal. Версія Turbo Pascal 7.0 фірми Borland International:

О Має вбудований редактор, компілятор, засоби запуску програм на виконання, дебаггер (налагоджувальник) (рос.-отладчик), який дозволяє не тільки тестувати програми, але й досліджувати їх роботу.

© Дозволяє систематично і точно висловлювати концепції і структури елементів програмування.

© Показує, що використання машинно-незалежної мови програмування з гнучкими структурами даних і управляючими конструкціями приводить до

3 Who Is Doing It? A research on Libre Software developers. Fachgebiet fur Inforrnatik und Gesellschaft TU-Berlin, August 2001 / Robles G., Scheider H., Tretkowski I, Weber N. WEB-сайт (Электроны. ресурс) / Способ доступа: URL widi.berlios.de/paper/ study.htmlпідвищення "удобочитаємості", верифицируемости4 і, відповідно, надійності без позбавлення (рос.-потери) ефективності.

Рис. 5.6. Чисельне співвідношення мо в програмування і програмістів, що їх використовували (більшість програмістів працювали з декількома

різними мовами)

О Turbo Pascal 7.G сприяє поліпшенню розуміння методів організації великих програм і методів управління програмістськими проектами.

© Має розвинуті засоби діагностики помилок, ефективні інструменти налагодження і по цим причинам є дуже зручним засобом для навчання програмуванню.

© Включає бібліотеку Turbo Vision з потужними засобами об'єктно-орієнтованого програмування.

в Має компактні розміри інтегрованого середовища розробки і документації з описом її роботи і конкретно конструкцій мови Borland Паскаль.

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

На рисунку 5.7 представлена нросторово-часова (рос.-нространственно-временная) картина розвитку мови Паскаль у структурі решти (рос.-остальных) найбільш значимих мов програмування.

4 Верифікація -процес підтвердження виконання програмою функцій, що у неї закладені, тобто перевірка правильності програми шляхом формального доказу відповідності програми завданій специфікації.

Рис. 5.7. Уявлення процесу розвитку мов програмування з поділенням їх на наступні групи мов: -імперативні (imperative); -гібридні (hybrid);

-об'єктно-орієнтовані (object-oriented); -функціональні (functional).

Якщо дивитися на мови програмування, як на інструмент обробки даних, всі вони мають наступні головні базові елементи:

О базові оператори опису даних і їх структур;

© базові інструкції, за допомогою яких реалізуються процедурні компоненти програм;

© базові операції (оператори): арифметичні, логічні і інші.

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

Запитання.

1. Що взагалі зветься мовою?_

2. Чим відрізняється мова людини від мови програмування?

3.    Для   чого   потрібно   компілювати   аба   інтерпретувати мову програмування?_


4.

Чим відрізняється процес і результат компіляції від процесу і результату інтерпретації?

5.

Чим відрізняється мова програмування системи від мови сценарію?

6.

Які мови програмування зараз найбільш розповсюджені?

7.

Які головні стилі програмування застосовуються при розробці програм?

8.

Як пов'язані мови програмування з типами задач, що вирішуються?

9.

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

10.

Які   спільні   базові   елементи   мають   практично   усі мови програмування?

Розробка рішення бізнес-проблеми це більше, ніж просто написання найскладнішого додатку (рос. -приложения) з застосуванням новітніх технологій. Розробка додатку повинна вестися, на основі бізнес-потреб. Якщо ж воно розроблене, додаток повинен бути прийнятий кінцевими користувачами, котрим він зобов'язаний допомагати у рішенні поточних проблем.

Дональд Р. Брандт. "Архітектура. Екзамен

Microsoft - екстерном".

б. ЗМІНА МЕТОДОЛОГІЇ СТВОРЕННЯ ПРОГРАМ

6.1. Тенденції розвитку інформаційно-комп'ютерних технологій

Багато змін, які впливають на інформатику пов'язані з прогресом у розвитку комп'ютерних (електронних) технологій (КТ) і нерозривно пов'язаних з ними інформаційних технологій (ІТ, а у англійської транслітерації, ІТ-Information Technologies), що у комплексі має назву інформаційно-комн'ютерних технологій (ІКТ). Більшість нових досягнень у цієї галузі уявляє собою частину постійного еволюційного процесу, котрий продовжується вже довгі роки. Закон Мура (прогноз, зроблений у 19б5 році фундатором фірми Intel Гордоном Муром, і стверджуючий, що щільність (рос. -плотность) транзисторів на кристалі мікропроцесора і частота його роботи буде підвищуватися удвічі кожних вісімнадцять місяців) і по сей день залишається у силі. Як результат дії цього закону можна спостерігати експоненціальний зріст обчислювальних можливостей комп'ютерів, завдяки чому з'явилась можливість вирішення задач, котрі були не розв'язувані усього декілька років тому. Треба також додати, що ємність (рос.-ёмкость) дискової пам'яті комп'ютерів зростає удвічі ще скоріше - кожні 9 місяців. І зовсім фантастичними темпами збільшується пропускна здібність ліній зв'язку - удвічі кожні 4-б місяців. Тільки у Китаю, у секторі телекомунікацій сукупний об'єм інвестицій у цю сферу, згідно статистичного звіту китайського уряду, склав у 2GG3 році $3G,1 млрд. Зараз Китай займає друге місце у світі після США по протяжності своїх телекомунікаційних та інформаційних мереж.

Поточним часом практично для усіх організацій характерно критичне нарощування об'ємів інформації. Зріст об'єму даних у інформаційних системах ставить перед ІТ-нерсоналом задачу побудови сучасних систем зберігання даних. По даним компанії Meta Group (Стемфорд, шт. Коннектикут, США) у 2GG2 році, об'єм інформації, акумульованої у майже будь якій організації США зростає удвічі кожні 18 місяців. По даним International Data Corp., платня за підтримку об'ємів даних, які неминуче збільшуються, складає сьогодніприблизно половину усіх видатків на ІТ-рішення. Настільки дорогі засоби забезпечення постійного доступу до інформації розробляються для того, щоб уникнути ще більших витрат, пов'язаних з утратою доступу до сховищ даних (до декількох мільйонів доларів у годину у залежності від додатку). Ці утрати складаються з суми збитків від зменшення ефективності праці співробітників з причини простою системи зберігання даних, коштовності робіт, котра не могла бути виконаною у період простою, а також коштовності ремонту елементів, що вийшли з ладу.

Галузь інформатики, у котру вкладаються величезні кошти і яка приносить, у свою чергу, надвисокі прибутки, постійно знаходиться під пильною (рос.-пристальной) увагою ведучих наукових і державних організацій практично усіх розвинутих країн світу (рис. 6.1, тут і далі дані з серверу: http: //www. nsda. ru/home .asp).

Рис. 6.1. Порівняння коштів, що вкладалися розвинутими країнами світу

у ІКТ галузь у 2002 році

До головних факторів, які визначають розвиток галузі ІКТ, можна віднести наступні:

О активне впровадження ІКТ у всі структури і галузі матеріального виробництва поточним часом є стратегічним напрямом, який підтримується урядами усіх розвинутих країн світу;

© рівень складності проблем, які вирішуються комп'ютерними засобами постійно підвищується;

© кількість спеціалістів, які володіють потрібним комплексом знань з інформатики значно менше потрібного (тому тільки у 2002 р. у ряді розвинутих країн були додатково виділені десятки і сотні тисяч так званих "зелених карт" для в'їзду до розвинутих країн "просунутих (рос.-продвинутых)" спеціалістів угалузі інформаційних технологій;

О постійно розширюється спектр нових технологій і, відповідно, нових галузей застосування ІКТ.

Вже давно не секрет, що пріоритети і рівень розвитку комп'ютерної індустрії визначає група держав, яку очолює США. Красномовніше (рос.-красноречивее) за все це говорять цифри. На кінець 2002 г. географічний розподіл доходів ринку інформаційних технологій виглядало так: США -46%, Європа - 29%, Японія - 13%, Азія - 4%; Канада -3%, інші країни - 5% (рис. 6 2)

7 Мировой  1Т-рынок, по регионам, 2000

„ х Азия/Тикий океан

Европа Канада США

Источник: IDC, 2001

Рис. 6.2. Розвиток мирового ринку ІТ по регіонам світу у 2001 р.

У перегоні (рос.-гонке) за інформаційне панування (рос.-господство) виграють капітали, що вкладаються у галузь. Не дивно, що серед «гегемонів» -виробників базового компонента інформаційних систем - мікропроцесорів, з декількох десятків фірм, які стартували у 70-і роки лідерами зосталися фактично двоє: Intel і AMD (США), котрі вивели їх робочі частоти у 2003 році за відмітку 3 ГГц. Ринком операційних систем і офісних додатків у 2003 р. монопольно володіла Microsoft (США) (по даним 2002 г. відповідно 90% і 86%), а серед розробників баз даних - Oracle (США). Це і не дивно, бо за експертними оцінкам 2003 року, у російській галузі ІКТ працювало біля 0,54 млн. чоловік, а у США - біля 10,5 мільйонів. Потрібно відмітити, що у це число, ясна річ, не увійшли ти фахівці ІТ, котрі за гроші США виконують їх замовлення на створення програмного забезпечення на своїй батьківщині: у Індії4, Ірландії5, Україні та інших країнах світу. По оцінкам міжнародної дослідницької компанії International Data Corporation (IDC), об'єм світового

4 У 2003 р. Індія входила до першої десятки країн світу по ряду показників виробницьтва. По об'єму ВВП вона вже посідала 4-е місце у світі після США, КНР і Японії. Щорічно тут випускається біля 2,5 млн. ПК, 10,5 млн. телевізорів, 20 млн. радіоприймачів і магнітол, 35 млн. електронних годинників, 1 млн. відеомагнітофонів. Країна посідає 3-е місце у світі по чисельності науково-технічного персоналу і друге - по кількості професіоналів комп'ютерного програмування.

Страницы:
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 


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

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