(NET) NET (2016)

Теоретичні питання програмування.

1. Загальні теорії будування програм.


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

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



1.1. Загальні теорії.


1.2. Programming paradigm.


1.3. Software development methodology.


1.4. Software development processes.


1.5. Software design.


2. Шаблони будування GUI.


GUI-патерні, чи шаблони, як ми їх називаємо - це достатньо корисна концепція стандартних єлементів сайту чи окремих десктопних програм, до яких юзера звикли і відразу розуміють, як користуватися програмою чи сайтом. Мені подобається ось цей сайт з переліком GUI-патернів - http://ui-patterns.com/patterns. А взагалі існує величезна кількість комерційних компаній, таких наприклад як https://www.devexpress.com/, або OpenSource команд, таких наприклад, як https://jqueryui.com/ - які мають повні комплекти стандартних GUI-патернів.

Чомусь прі розмовах про GUI часто забувають про FLEX, який просто у сто разів перевершує вся інші технології GUI разом, при чому FLEX присутній на значно більшому проценті стаціонарних кампутерів, ніж навіть JavaScript. Тільки мобільні платформи намагаються витісніти FLASH та замінити його на якийсь свій власній софт.

3. Абстрактні шаблони OOP.


OOP (Object Orientired Prgraming) - це специфічна нетрадіційна теорія будування програм, яка поширилася за декілька останніх років. Перший комп'ютер був побудований Аланом Тьрингом у 1936-му році, тобто 80-ть років тому. Це був достатньо сучасній і складний комп'ютер, на якому наприклад можна було розшифрувати шифри німецького генштабу. Через 60 років, у 1996-му році, тобто 20 років тому - на платформі X86 з'явився VB6 (на якому я працював багато років, ось наприклад), який вже мав достатньо функцій для підтримки OOP. А з 2002-го року, коли з'явився VB.NET, ця нетрадіційна теорія поширилася ще більше. Але, як і раніше більшість програм у цьому світі працює взагалі без будь-яких принціпів OOP - це перше що потрібно розуміти, коли ви розмовляєте про OOP. Наприклад будь-який SQL-сервер працює як і раніше, не враховуючи наявність у світі ідей OOP. Також JSON, XML, Reqular expressing - це взагалі протилежний напрямок думок. Найбільш поширений процессор у нашому світі, який розташований у SIM-карті, теж працює без будь якого OOP, як і процессор aрхітектури X86 нічого не знає про концепції OOP. Значна кількість сучасних мов написання програм взагалі ніяк не підтримує OOP - і це не заважає добре працювати цим программам та сайтам, наприклад PERL. А найбільш сучасні та поширені комерційні платформи програмування, побудовані вже після 2005-го руку - взагалі лише частково підтримують OOP, наприклад той же FLEX не підтримує перегрузку методів. А ще більш старіші модіфікації цієї технології, наприклад FLASH-player, мають ще більш обмежену підтримку OOP, однак Flash-player встаовлений на будь-якому стаціонарному ком'пьютері і чудово працює! Взагалі, я працював у национальному космічному агенстві України саме тоді, коли там все добре працювало, навіть усі супутники виходили у космос своєчасно. Тут можна додати трошки гумору - але коли з'явилося OOP - то все перестало нормально працювати, навіть усі супутники впали та затонули у океані.

Навіть у листі вище - Programming paradigm, OOP - це лише одна із шесті сучасних конкурентних теорій будування програм - по яким у своєму мозоку можна дивитися на архітектуру своїх програм. Тобто, OOP - це спеціфічне обмеження точки зору на будівництво програм. Але теорія OOP пішла ще далі, тобто побудовани стандартні шаблони-патерни OOP. Тобто теорія OOP передбачає що можна будувати будь-які програми саме з цих шаблонів і взагалі їх потрібно використовівати якомога частише.

Ще одна сумнівна концепція OOP полягає в тому, що усі попередні роки вважалося, що код програми повинен бути максимально лінейним, тобто найбільшої проблемою коду вважалося GOTO. Goto назад по коду вважалося взагалі неприпустимим, наприклад якщо в інстітуті у період мого навчання хтось намагався сдати програму, в якої була GOTO назад, вище по коду, то студенту ставили двійку і відправляли на повторну спробу сдати єкзамен. З цієї точки зору OOP - це взагалі один суцільний GOTO, тобто один спочатку NEW в базовому классі, потім інші методи у класах, які успадковані від базового, інтерфейси визначени десь у третьомі місці, воні керують (наприклад за допомогою поліморфізму) який саме метод буде насправді відпрацьовувати - це все один суцільний комок GOTO - ніякого якісного FLAT-коду тут немає. І якщо самому автору цей код ще хоч якось зрозумілий, то побачити концепції автора OOP-кода іншому програмісту майже неможливо.

Використання OOP часто передбачає, що архітектор компанії чи team lead компанії може намалювати якісь UML діаграми, а всі програмісти компанії подивилися на них і почнуть по ним писати код. Тобто заздалегідь передбачається, що проєктуваня софта ведеться зверху додолу, а не навпаки, спочатку невеличкі потрібні фунції, з яких потім збирається увесь софт. Але, як кажуть у статті https://en.wikipedia.org/wiki/Software_design_pattern, взагалі уся концепция OOP та особливо стандартних патернів OOP дуже сумнівна - "The concept of design patterns has been criticized in several ways".

Одне с перших пояснень концепції використання OOP-патернів у ASP.NET можна подивитися у книжці Роберта Мартіна від 2000-го року Design Principles and Design Patterns. Більш сучасний та тверезий погляд на принціпи OOP можна подивитись ось тут - .NET Design Patterns, але людина, що розповідає про сучасні патерни OOP дуже обмежена у своєму кругозорі - вона навіть ніколи не бачила головної специфічної мови, яка була спеціально розроблена для мікрософтовської платформи - Visual Basic .NET. Але в цілому цей сайт непоганий, тому я вирішив доповнити цю статтю на цієї сторінці описом шаблонів OOP для головної мови мікрософтовскої платформи - VB.NET. Описи патернів на російской мові звідси.


Creational Patterns Structural Patterns Behavioral Patterns

Нажаль, не всі прототіпи та шаблони OOP корисні. У мене було безліч книжок про шаблони OOP, більшість яких я вже давно викинув на смітник, бо люди ніби-то навмисне знущаються над читачем своїми патернами, які нібито повинні полегчити життя. Але ось ці дві перші книжки у мене зберіглися і досі. Я так і не зміг їх уважно дочитати до кінця.






Comments ( )
Link to this page: //www.vb-net.com/ProgramTheory/index.htm
< THANKS ME>