1 Востаннє редагувалося skuzya (03.09.2012 22:22:39)

Тема: Програмування - основа сучасного світу

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

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

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

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

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

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

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

Весь процес програмування умовно можна розділити на кілька певних стадій:
• Аналіз.
• Проектування - створення алгоритму, розробка його комплексу.
• Кодування і компіляція - створення тексту програми і його перетворення в зрозумілий для машин код за допомогою компілятора.
• Тестування та налагодження, тобто перевірка помилок в програмі і при їх наявності - усунення.
• Випробування програми і при вдалому випробуванні - її здача.
• Супровід.


Трохи історії

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

Революцію в програмуванні справив Жозеф Марі Жаккард, який в 1804 році створив жакардовий ткацький верстат, завдяки якому з'явилася можливість програмувати візерунки на тканинах за допомогою перфокарт.

Чарльз Беббідж розробив першу обчислювальну машину, яку можна було б програмувати, але, на жаль, він не зміг її побудувати. Дочка великого поета Дж.Байрона - Ада Лавлейс, 19 липня 1843 р. написала першу програму, яка призначалася для обчислювальної, програмованої та аналітичної машини. Її програм могла вирішити рівняння Бернуллі, яке виражалося в законі збереження енергії рухомої рідини. У своїй роботі Ада Августа розглянула величезну кількість питань, це була її перша й остання робота. Деякі положення, описані в її книзі - економія робочих комірок пам'яті, зв'язок рекурентних формул з циклічним процесом обчислень - зберігають свою актуальність і продовжують використовуватися по сьогоднішній день. Якщо в цілому розглядати матеріали Беббіджа і Лавлейса, то у них є такі поняття як підпрограма і бібліотека підпрограм, модифікація програм і індексні регістри - ці поняття довго ніхто не застосовував. Широке поширення на мові програмування вони отримали лише в 1950-х роках минулого сторіччя. Але, незважаючи, на вживані поняття та розрахунки Ади Лавлейс, ніяка з її програм так і не була запрограмована і не використовувалася, ні на одному ЕОМ.


Мова для програмування

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

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

Існує мова, яка безпосередньо виконує ЕОМ, без перетворення - машинна мова, її ще називають машинний код або мова машинних команд. Раніше всі програми писалися за допомогою саме такої мови, на даний момент вона втратила свою актуальність і на ній практично нічого не створюють. Сучасні програмісти пишуть програми на зручній для них мові, а поле написання перетворять її в машинний код за допомогою компілятора. Сам процес перетворення може бути здійснений в один або декілька етапів, після перетворення машинний код готовий до використання ЕОМ або на цільовому процесорі, або в проміжному представленні, яке може бути виконане інтерпретатором, тобто віртуальною машиною. Це стосується не всіх мов, така розробка та перетворення актуальна лише для мов високого рівня. Коли потрібен повний і низький за рівнем контроль над цілою системою машинних команд або окремих осередків пам'яті, то програма пишеться на мові асемблера, який перетворюється у відповідну машинну інструкцію для цільового процесора в співвідношенні 1:1. Тому транслятори з цієї мови вважаються алгоритмічно найпростішими трансляторами.

Деякі мови інтерпретуються не в машинний код, а в двійкову систему кодів, яка називається байт-код. Вона застосовується в Forth, деяких реалізаціях Python, Lisp, Java, Perl, мовах для. NET Framework.


Програмні засоби

Програмні засоби можуть бути інструментальними або системними. При системному забезпеченні це може бути операційна система, інструменти та технології Windows, Mac OS X, Linux і т. п. В останні роки на олімпіадах з інформатики та програмування користуються лише ліцензійними інструментальними засобами, які дуже поширені. А з мов програмування на таких же олімпіадах особливою популярністю користуються Паскаль, С / С + + і Java. Для ведення документації для офісів зазвичай використовують пакет програм - Microsoft Office та OpenOffice.org.


Парадигма програмування

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

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

Після такого усвідомлення швидкими темпами були розроблені і створені супер ЕОМ, які мали векторну або матричну архітектуру. Супер ЕОМ - це декілька автономних процесорів, які можуть обмінюватися між собою отриманими даними і результатами обчислень. Нові мікропроцесори намагаються максимально ефективно використовувати у своїй архітектурі всі свої можливості для паралельного виконання різних операцій. Такі паралелі можна розділити на паралелізм рівня мікрооперацій і паралелізм рівня процесів.

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

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

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

Кожна парадигма по-своєму цікава й унікальна, максимально корисно використовувати їх у поєднанні, наприклад як С++, яка використовує імперативне функціональне та інші види програмування.


Автор: Сергій Кузьменко
Написано спеціально для Українського Форуму Програмістів

Подякували: Replace, d4rkc10ud2

2

Re: Програмування - основа сучасного світу

Цікаво, цю статтю хтось читав? :)

3 Востаннє редагувалося miroslav.chandler (05.09.2012 23:41:50)

Re: Програмування - основа сучасного світу

tl;dr

pew pew :D
Блоґ
Подякували: Replace1

4

Re: Програмування - основа сучасного світу

Інтерпретатор може діяти за двома напрямками - або явно не перетворювати мову програмування в спеціальний код для ЕОМ, або робити це неявно, по ходу виконання програми.

Я щось не зрозумів цього речення, якщо не важко то поясніть до чого тут слова "Інтерпритатор", "явно", "неявно" і "перетворювати мову програмування в спеціальний код".

Деякі мови інтерпретуються не в машинний код, а в двійкову систему кодів, яка називається байт-код. Вона застосовується в Forth, деяких реалізаціях Python, Lisp, Java, Perl, мовах для. NET Framework.

Не інтерпретуються а компілюються в проміжний код, а потім вже проміжний кож інтерпритується!!!

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


Написано правильно але дуже незрозуміло для тих хто незнайомий з ООП.

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

Короче фігня написана. Такі тексти користі не дають а лише заплутують, читайте краще Бйорна Страуструпа або Девіда Фланагана.

Щоб зрозуміти рекурсію потрібно спочатку зрозуміти рекурсію.
int fac(int n) { return n < 2 ? 1 : n*fac(n-1); }
Подякували: Replace1

5

Re: Програмування - основа сучасного світу

Це був один seo-експеремент. Текст фігня.
В Google є якись фільтр, який не пускає молоді сайти в топ по конкурентним запитам.

Можливо пізніше трохи перепишу. Нажаль не дало ніякого результату.

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

Наприклад, цей сайт виліз тількі із-за того що він вже давно
21. fingal.com.ua/content/view/476/76/1/2/
22. fingal.com.ua/content/view/447/76/1/2/
23. fingal.com.ua/content/view/448/76/1/2/

6

Re: Програмування - основа сучасного світу

Replace написав:

Це був один seo-експеремент. Текст фігня.
В Google є якись фільтр, який не пускає молоді сайти в топ по конкурентним запитам.

Можливо пізніше трохи перепишу. Нажаль не дало ніякого результату.

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

можна жити лише на низькочастотниках))) Хочеш 1000 уніків в день? Створи 1000 сторінк під 1000 низькочастотників. Але це не легкий труд)))

Щоб зрозуміти рекурсію потрібно спочатку зрозуміти рекурсію.
int fac(int n) { return n < 2 ? 1 : n*fac(n-1); }

7

Re: Програмування - основа сучасного світу

Кому треба сам знайде форум.
А це був та і в принципі залишається SEO-експерементом для запиту програмування.

8

Re: Програмування - основа сучасного світу

А що як хтось скопіює оце собі у реферат? Це ж потім якомусь викладачеві доведеться це читати :-0

9

Re: Програмування - основа сучасного світу

Не осилив я всього тексту)

10

Re: Програмування - основа сучасного світу

Тому хто дочитав до кінця буде винагорода? Сподіваюся буде, бо ледь дочитав.

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

11

Re: Програмування - основа сучасного світу

Завдяки цій темі я знайшов цей чудовий форум. А взагалі маячня ще та.

12

Re: Програмування - основа сучасного світу

Imagine написав:

Завдяки цій темі я знайшов цей чудовий форум. А взагалі маячня ще та.

Під маячнею Ви маєте на увазі перший пост ?