Basic форева?, Різне, Програмування, статті

Відразу зазначу якусь провокаційність таких оглядів. З одного боку, розгляд Visual Basic. NET нагадує тестування новенької автомашини при повній відсутності конкурентів. З іншого – порівняння декількох (хоча б двох) продуктів загрожує релігійними війнами, місце яким, швидше, в онлайнових форумах. До того ж найближчий конкурент – Delphi – аж надто популярний на теренах СНГовщіни, так що тема «VB.NET проти Delphi» викличе занадто палкі суперечки. А тому я спробую обмежитися констатацією фактів, перемежовуючи її своїми суб'єктивними оцінками.


Інша мова


За час занурення в VB.NET я випробував два суперечливих почуття – розчарування і задоволення. Почнемо з розчарування. Озброївшись томами документації та довідників і засів за новинку, я виявив абсолютно іншу мову. Те, про що так багато говорили, все ж відбулося: старий мову рознесений в пух і прах, а попіл його розвіяно за вітром. Що являв собою VB до сьомої версії? Можна було порівняти його з чимось на зразок потужного калькулятора. Продуктивністю і широтою можливостей він, зрозуміло, поступався Delphi і VC + +, як поступається найбільш просунутий калькулятор найпримітивнішій персоналке. Та й мети обігнати їх не ставилося – VB позиціонувався як легкий в освоєнні і роботі інструмент програмування найпростіших завдань. Бейсік був надзвичайних простою мовою, так що примітивні програми, навіть по роботі з базами даних, можна було зробити буквально не торкаючись клавіатури, однієї лише мишкою. Програма могла складатися з пари рядків – ніякої попередньої підготовки, код лягав так, як «Йшла думка». У цьому й полягала сила VB: за швидкістю створення додатків він був абсолютним лідером. На жаль, VB.NET в цьому сенсі переметнувся до табору противника, він тепер набагато ближче до VC, ніж до старого доброго VB.


Повернемося до другого почуттю. Тепер кожного, хто скаже, що VB.NET НЕ об'єктно-орієнтована мова, можна сміливо закидати камінням. Всі три основних ознаки ООП – інкапсуляція, поліморфізм та успадкування – Присутні в VB.NET практично в повному обсязі.


Більше того, об'єктна модель була розширена таким чином, що в деяких аспектах VB.NET став навіть «об'єктні» C + +. Наприклад, у ньому є безліч функцій для роботи з рядками, і навіть зі звичайною рядком можна працювати як з об'єктом:

Dim str As String =
“hello world”, st As String
st = Str.Substring(0, 5)
Debug.WriteLine(st)

Ні в С + +, ні в Delphi подібні фокуси не пройдуть (втім, чи потрібні такі викрутаси – теж ще питання).


Майже все, за що критикували VB, усунуто. З'явилися конструкції для роботи з винятками, статичні властивості, поля і методи, заборона спадкування, перевантаження (overload) і перевизначення (overriding) методів, абстрактні класи, розширені інтерфейси, покажчики на функції або методи (delegate), дуже корисні механізми роботи з регулярними виразами. З'явилися нові класи: наприклад, FileSystemWatcher дозволяє здійснювати моніторинг файлової системи – завдання, яке раніше було доступно лише фахівцям, або клас Thread, що дозволяє маніпулювати потоками.


Серйозним змінам піддалися і графічні бібліотеки. Якщо у VB 6 були доступні лише базові примітиви, то VB.NET надає унікальні інструменти. Крім банальних графічних примітивів, які є в арсеналі всіх RAD, VB.NET надає ряд високорівневих функцій: криві Безьє, сплайни, графічні шляху, складна градієнтна заливка, буферизація відображення, афінні перетворення. Все це господарство обрамлене у вельми привабливу оболонку, так що, наприклад, створити форму у вигляді тексту можна буквально в кілька рядків. Природно, підтримка СОМ, яка була чи не найелегантнішою в VB, в новій версії теж на висоті.


Все вищесказане означає, що VB став нормальною мовою, використовує всі сучасні технології – не більше, але й не менше.


Апгрейд додатків


Втім, з перекомпіляцією програм справи в VB.NET йдуть гірше, ніж раніше. Так як мова зазнала серйозні зміни, при спробі відкриття старих програм автоматично запускається майстер оновлення (рис. 1), який по ідеї повинен допомогти в перекладі вихідного тексту (а в ідеалі – взагалі все зробити самостійно). Якщо в програмі присутні будь-які новації, як то: звернення до драйверів баз даних або нестандартні інтерфейсні можливості (реалізовані як сторонні ActiveX), то труднощів не уникнути (рис. 2). Але навіть якщо конвертація пройшла успішно, не поспішайте запускати програму, а перш зверніть увагу на вихідний код – цілком можливо, що майстер прикрасити його безліччю попереджень, так що буде вельми до речі звернутися до спеціально створеного файлу UpgradeReport.htm з інформацією про проблеми. З власного досвіду, який підтверджується численними криками у форумах і списках розсилки, можу сказати, що повністю оновити більш-менш складну програму «на автоматі» вдається дуже рідко.


IDE


Тепер поговоримо про те, з чим стикається будь-який програміст, – про середовище розробки. Зміни, яких зазнала IDE в порівнянні з попередньою версією, теж істотні. Тепер для Visual Basic, Visual C + +, Visual C # існує єдине середовище розробки, що включає в себе веб-браузер для перегляду документації та іншої довідкової інформації і безліч інструментальних панелей, які підтримують три режиму: auto-hide, коли панелька ховається за край екрану і розгортається при натисканні (що дуже заощаджує місце), а також звичайний і плаваючий (floating) режими (рис. 3). Надзвичайно зручна функція Clipboard Ring (мал. 4) – спеціальна панель, що зберігає двадцять останніх елементів із буфера. Звичайно ж, повністю підтримується code competition, що дозволяє переглядати поля і методи класу, їх визначення, а також вибирати потрібний клас клацанням миші. Нововведенням серед RAD є механізм макросів, так що тепер можна автоматизувати багато операцій.


У редакторі найкориснішим нововведенням я б назвав «згортання» вихідного тексту, коли цілий блок коду можна згорнути до одного рядка, вводячи ієрархічну структуру прямо в полі редактора. Можливості контекстно-залежної обробки теж на висоті: наприклад, по правому кліку мишки на службовому слові можна отримати список членів класу (List Members), інформацію про слово (Quick info) і автоматично перейти в точку його визначення (definition).


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


Візуальні та невізуальні компоненти


Впадає в очі, що цих компонентів (рис. 5) набагато менше, ніж, наприклад, в Delphi 6. Але середовище існує зовсім недовго, так що поступово компоненти з'являться, а на перший час можна обійтися старими OCX, що дісталися в спадок від VB 6. Не всі вони успішно інтегруються в VB.NET, але проблеми в основному виникають з «саморобками», а компоненти від відомих команд розробників імпортуються легко. Ті ж деякі компоненти, що в середовищі присутні, працюють ідеально і за своїми можливостями нерідко обходять побратимів з Delphi. Із приємних нововведень можна відзначити ErrorProvider – компонент, службовець для перевірки та індикації помилок користувача. Якщо користувач вводить в поле дати щось, що відрізняється від прийнятих форматів, звичайна програма виведе віконце з попередженням, ErrorProvider ж відобразить поруч з віконцем введення миготливий знак оклику (рис. 6). Здавалося б, дрібниця, але з біса зручно.


Куди йдемо ми з Пацем …


На думку Microsoft, питання, куди рухатися далі, у програмістів на VB бути не повинно, – що тут думати, переходите на VB.NET. Але не все так просто. Як виглядала ситуація до цього часу? Були справжні (Читай VC + +) Програмісти з великої літери – «волохаті і неголені». Неголені тому, що поки набиваєш всякі там «AmbientShowHatching» і «CreateComponentCategory», життя проходить і поголитися просто не встигаєш. Були програмісти нормальні (читай дельфісти) – чисто поголені, так як поки їх колеги виписують кренделя на С + +, на Delphi можна те ж саме зробити рази в два швидше. І були програмери (Шанувальники VB), які, поки їх колеги мучаться, встигнуть у відпустку з'їздити, одружитися і розлучитися. А все тому, що на VB можна було або вирішити завдання ще швидше, або не вирішити взагалі, бо «Ну не можна ж таке на Бейсіку зробити ». Зараз програмери вимирають: VB.NET вже не дозволяє не думати – доведеться спочатку підучити нову мову, потім звикнути до нового середовища і винайти спосіб перетягнути весь багаж накопичених матеріалів. І ось тут виникає роздоріжжі, про який в Microsoft мовчать. Переучуватися на VB.NET особливого сенсу немає, так як той же C # відрізняється від VB.NET незначно, часом вся різниця полягає в дрібницях типу точки з комою замість двокрапки в кінці операнда або подвійного знака рівності (= =) при перевірці на рівність. І це при тому, що для C # вже зараз існує база напрацьованих алгоритмів, яка поповнюється набагато швидше, ніж база для VB.NET. А значить, дуже багатьох VB.NET штовхає в обійми або C #, або в Delphi, бо основна перевага VB – простота – втрачена безповоротно, а з просунутих коштів не все одно, що вибирати?


Спробуємо заглянути в майбутнє. Обидва провідні постачальника RAD, компанії Microsoft і Borland, при виході нових продуктів оголосили про кроссплатформной підтримки або відкрито, або в завуальованій формі. Таким чином, мейнстрім софтостроенія на майбутню п'ятирічку начебто зрозумілий: обидві компанії спробують створити інструмент для розробки додатків під Linux, причому такий, щоб існуючий код переносився максимально безболісно. Як можливий підсумок – вибухове зростання числа додатків під Linux, і той, хто першим займе місце під сонцем, отримає карт-бланш на цьому досить перспективному ринку. Може здатися, що Borland сильно випереджає Microsoft – адже Kylix вже існує, тоді як портування. NET ще питання. Але більшість програм на ObjectPascal для Windows створені з використанням старої бібліотеки візуальних компонентів – VCL, і тому не переносяться в Kylix. Код неминуче доведеться переписати з використанням CLX – нової кроссплатформной бібліотеки, а потім ще перекомпілювати. До того ж уже зараз видно підводний камінь (або навіть міна уповільненої дії): графічна бібліотека Qt, на базі якої будується CLX, належить сторонній компанії – TrollTech. Враховуючи манеру MS поїдати конкурентів, можна припустити, що якщо раптом Kylix досягне приголомшливих результатів, Microsoft просто купить TrollTech, поставивши хрест на Qt і CLX.


Поки що. NET існує лише для Windows, ситуація стабільна – програми будуть працювати лише під Win98, Me, NT, 2000 і XP за умови установки. NET CLR. З часом буде неминуче напрацьований парк. NET-додатків. А тепер уявімо, що Microsoft (або якась інша компанія) портируют. NET на Linux. А значить, все. NET-додатки будуть автоматично доступні і на Linux. І тоді ця широко поширена у вузьких колах ОС зможе нарешті обзавестися парком сучасного прикладного ПЗ.


Є й ще один цікавий момент. Скільки не думай про причини невдач багатьох ОС, перше, що спадає на думку, – це відсутність додатків. Так от, якщо створення. NET-додатків піде нормальними темпами, у багатьох, здавалося б уже мертвих, ОС з'явиться шанс на відродження: досить портувати. NET на свою платформу, і користувачі автоматично отримають доступ до різноманітних і популярних програм. Погодьтеся, звучить досить заманливо: повернути до життя, наприклад, OS / 2. Потенційна можливість для цього тепер є.


(Є деякі несуттєві обмеження. Наприклад, як і в Delphi, заборонено множинне спадкування (multiple inheritance), коли один клас є нащадком відразу декількох класів. Для обходу цього обмеження можна використовувати механізм інтерфейсів. )


(Наприклад, такий популярний об'єкт, як поле введення RTF, підтримує і автовизначення URL, та установку фону для довільних ділянок тексту, і інші смаколики.)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*