Расцвет и упадок Visual Basic

Расцвет и упадок Visual Basic

Для программирования в 1988 году QuickBASIC был волшебной штукой. Можно было писать код без громоздких номеров строк, отлавливать синтаксические ошибки в процессе набора и запускать программы прямиком из среды разработки без необходимости возни с командной строкой. Закончив программу, можно было делиться ею со своими друзьями при помощи вот этих ребят:

В наши дни QuickBASIC остался лишь ещё одной диковинкой из далёкого прошлого. Хотя так ли это? Новаторский проект под названием QB64 создал современную реплику QuickBASIC. Он запускается на Windows, MacOS и Linux, и не требует эмулятора. При запуске программы в QB64 среда выполняет хитрый трюк — сначала она транслирует код на BASIC в C++, а затем компилирует его.

Классический VB и эра Visual

QuickBASIC был впечатляющей средой для далёких дней текстовых компьютерных систем. Но всё изменилось, когда Microsoft выпустила Windows и погрузила пользователей PC в графический мир кнопок и кликов. Одновременно с выпуском компанией Microsoft Windows 3.0 (первой версии, которая добилась истинного успеха), был выпущен Visual Basic 1.0.

Это было нечто совершенно новое. Пользователь мог создавать кнопки для программ, рисуя их на поверхности окна, как на холсте художника. Чтобы заставить кнопку выполнять какое-то действие, достаточно было дважды щёлкнуть на неё в среде разработки и написать код. И код писался не на загадочном C++ с кучами классов, сложным управлением памятью и непонятными вызовами Windows API. Вы как цивилизованный человек писали код на дружелюбно выглядящем VB.

Расцвет и упадок Visual Basic

Все эти графические примочки впечатляли, но настоящим секретом успеха VB была его практичность. Попросту не было ни одного другого инструмента, в котором разработчик мог бы набросать полный интерфейс и приступить к кодингу так же быстро, как в VB. И хотя историки любят порассуждать о визуальной части Visual Basic, его неподражаемое умение не имело ничего общего с графическими виджетами. VB стал знаменитым благодаря легендарной функции edit-and-continue, позволявшей разработчикам запускать программы, находить ошибки, исправлять их и продолжать работать с новым кодом. Это разительно отличалось от почти всех остальных известных человечеству сред программирования, вынуждавших разработчиков компилировать работу заново и после каждого изменения начинать снова.

Оригинальный Visual Basic процветал примерно десяток лет. Возникнув как дружественная среда для новичков, он превратился в инструмент, имеющий достаточно возможностей и для серьёзных программистов. К моменту выпуска VB 6  — последней версии классического Visual Basic, в мире по приблизительным подсчётам было в десять раз больше кодеров на VB, чем на суровом C++. И они не просто создавали макеты игрушечных приложений. Visual Basic проложил себе дорогу в офисы компаний и даже в Интернет при помощи ASP (Active Server Pages) — ещё одной чудовищно популярной технологии. Благодаря ей вы могли создавать веб-страницы, способные общаться с компонентами VB, связываться с базами данных и писать HTML на лету.

Всё это происходило практически без структуры, если только вы не решали создать её самостоятельно. Это было неписанное правило Visual Basic — он давал вам свободу, о которой вы потом пожалеете.

Проблема классического VB

Во многих кругах классический VB имел плохую репутацию. Фанатики ООП часто жаловались, что VB недостаёт поддержки наследования. (Это была странная жалоба, ведь наследование часто является отличным способом для неопытных разработчиков выстрелить себе в ногу — именно этой особенности VB не требовалось.) На самом деле, классический VB не имел склонности к объектно-ориентированности. К концу своей жизни он уже поддерживал интерфейсы, полиморфизм и библиотеки классов. Всё это было позаимствовано из COM — фундаментальной части технологии компонентов, «прошитой» в каждой версии Windows.

Настоящая проблема классического VB заключалась в том, что он был слишком успешным. Он настолько эффективно снижал барьеры для новых программистов, что в нём мог работать практически кто угодно. Беззаботные новички, усталые сотрудники компаний и студенты решали проблемы, которые на любой другой платформе представляли бы гораздо большую сложность, и повсюду развешивали спагетти-код.

Другими словами, поскольку VB был достаточно лёгок в использовании, даже если вы не учились на программиста, его применяло множество людей, которые не учились быть программистами. И VB не делал ничего, чтобы помешать укоренению их плохих привычек.

VB.Fred и платформа .NET

Перенесёмся вперёд, в 2002 год: Microsoft занимается тем, что лучше всего получается у Microsoft — разрушает собственную экосистему разработчиков, вводя совершенно новый способ работы.

На этот раз проектом было масштабное изменение архитектуры COM — компонентной технологии, служившей опорой Windows (а косвенно и классическому VB). Это была ставка «ва-банк» для компании-мегалита, уже совершавшего несколько раз такие рискованные перемены.

Microsoft назвала эту «перезагрузку» платформой .NET по множеству сомнительных причин, в том числе и потому, что Интернет-технологии в то время продолжали оставаться свежими и восхитительными, а ещё потому, что .NET включала в себя функцию веб-сервисов, которую Microsoft твёрдо решила продвигать. Продукт создавался под сильным влиянием Java и имел полный ассортимент инструментов для общения с базами данных, создания веб-сайтов, написания многопоточных программ, установки соединений через сокеты — практически для всех вариантов применения, которые могли бы вообразить бизнес-разработчики.

Единственная проблема заключалась в том, что для реализации всех этих функций Microsoft пришлось избавиться почти от всего классического VB.

Расцвет и упадок Visual Basic

Если сильно прищуриться, то новая версия под названием VB.NET выглядела почти такой же. Но в ней появилось множество крупных и мелких революционных изменений. Крупные: старые программы на VB остались заключёнными в мире старых программ, и удивительно слабый мастер миграции почти никак не мог это исправить. Мелкие: программистам на классическом VB пришлось привыкать к новому способу подсчёта элементов массивов. Они больше не могли начинать с 1, как обычные люди. Теперь они должны были начинать с 0, как официальные программисты.

Ещё одно важное изменение: больше никакой функции edit-and-continue.

Разработчики любят жаловаться, а разработчики на VB особенно этим известны. Почти сразу же группа влиятельных разработчиков на VB окрестила новую среду программирования Microsoft именем VB.Fred, чтобы подчеркнуть тот факт, что этот новый язык не является Visual Basic.

Что обрекло Visual Basic на гибель

Вы можете предположить, что изменения .NET стали причинами возникновения трещин в фундаменте VB и привели к началу неизбежного упадка. Но всё было иначе. На самом деле, несмотря на то, что VB.NET двинулся в новом направлении и внёс критические изменения, сделавший «сиротой» совершенно хороший код классического VB, он получил огромную популярность. Так произошло благодаря тому, что VB.NET дал нечто, чего раньше не могли добиться разработчики на классическом VB — уважение.

В мире .NET языки VB и C# имеют одинаковый вес. Каждая строка кода на VB может быть транслирована в эквивалентную строку кода на C#, и наоборот. Оба языка имеют одинаковые возможности, используют одинаковые компоненты и компилируются в полностью одинаковый вид (в нечто под названием промежуточный язык). VB наконец-то освободился от своего синдрома «гадкого утёнка».

Но превращение в ещё один респектабельный язык программирования создало и проблему. Пропал энтузиазм, сделавший VB любимым языком столь обширной группы людей. Не потому, что изменился VB, а потому, что изменился C#.

Как только VB получил такую же мощь, что и у C#, язык C# тоже перенял удобства Visual Basic. Например, наличие функций типобезопасности и управления памятью .NET означало, что разработчикам на C# больше не придётся беспокоиться об утечках памяти, как и разработчикам на VB.

Другими словами, у C# теперь появилась «страховочная сетка», защищающая любителей, студентов и новичков, и не ослабляющая при этом его мощи. Внезапно VB перестал быть чем-то особенным. Он превратился в просто ещё один инструмент из набора умелого программиста.

Современное состояние Visual Basic

Сегодня Visual Basic находится в странном состоянии. Среди профессиональных разработчиков он занимает примерно 0% внимания — VB даже не появляется в опросах профессиональных разработчиков или в репозиториях GitHub. Однако он всё ещё жив — управляет макросами Office, старыми базами данных Access и древними веб-страницами ASP, а также привлекает новичков к .NET. Индекс TIOBE, оценивающий популярность языков по результатам поиска, по-прежнему ставит VB в список пятёрки самых обсуждаемых языков.

Но похоже, что инерция развития языка в последнее время заканчивается. В 2017 году Microsoft объявила, что начнёт добавлять в C# новые языковые функции, которые могут не появиться в Visual Basic. Эта перемена не возвращает VB статус «гадкого утёнка», но вредит его статусу как части .NET.

Если откровенно, то тенденция сталкивания VB на обочину началась уже несколько лет назад. Серьёзные разработчики знают, что ключевые части .NET написаны на C#. Они знают, что C# — предпочитаемый язык для презентаций, книг, курсов и воркшопов. Если вы хотите говорить на VB, то это не нанесёт ущерба создаваемым вами приложениями, но может ограничить возможность общения с другими разработчиками.

Одна из ниш, в которых Visual Basic должен чувствовать себя естественно — это образовательный рынок. Но даже там он остаётся чёрной овцой. Современные языки наподобие C# и Python просты и достаточно безопасны, чтобы их можно было выбирать в качестве первого изучаемого языка. Если вам нужно что-то попроще для детей то рынок переполнен инструментами для графического программирования наподобие Scratch. Своей притягательностью обладают и языки «с фигурными скобками»: C#, C, JavaScript и Java. Они имеют схожий синтаксис, и человек, выучивший один из них, будет чувствовать себя уверенно с другим.

В области веб-разработки Microsoft смотрит в пустоту упущенных возможностей. Кого бы не соблазнила версия VB, столь же простая в работе, как VB 6, но ещё и способная компилироваться в JavaScript и комбинироваться с дизайнером форм HTML? Да, новые Google Maps в таком инструменте не создашь, но он мог бы возродить привлекательность Visual Basic, позволив бизнес-разработчикам, студентам и любителям создавать простые онлайн-приложения без необходимости пользоваться громоздким JavaScript. Вместо этого Microsoft создала продукт на основе VB под названием LightSwitch, исчезнувший со смертью браузерного плагина Silverlight. Если Microsoft начнёт создавать ещё один продукт класса «кодинг для широких масс», то это скорее всего будет управляемый шаблонами инструмент с небольшим количеством кода наподобие PowerApps.

Visual Basic и раньше грозили разные опасности. Но на этот раз, похоже, всё по-другому. Кажется, солнце для одного из самых популярных в мире языков программирования на самом деле закатывается. Если это правда, то Visual Basic не будет постепенно исчезать на протяжении десятилетий. Он станет ещё одним легаси-продуктом, недооценённым инструментом без любви пользователей и будущего. Потеряли ли мы что-то особенное, или просто избавили от мучений устаревшую технологию — решать вам.

П.С. .… есть такое мнение, что VB сейчас живее всех живых и по-русски называется «1С Предприятие» :)

 

источник

  • avatar
  • .

20 комментариев

avatar
рано или поздно мы придем к программированию на естественных языках. И это будет бомба. Все будут уметь программировать ровно так же, как все сегодня умеют писать и читать.
avatar
одинэс
avatar
Если посмотреть на правописание и грамотность людей получивших и получающих российское образование, то никакой «естественный» язык программирования не поймет и половины команд… И это очень печально
avatar
Visual C умер навсегда, зачем он был вообще, без него справлялись.
К правописанию и грамотности людей, написание программ не имеет отношение, не нужно быть охуенно грамотным в русском языке, как и в английском, чтоб сделать программу в ассемлере, этот язык будет всегда, пока компьютеры есть, но не каждому грамотному это дано понять.
avatar
я пользуюсь иногда программой, сделанной в ассемблере (в машинных кодах, кому не понятно), rufus, уважуха, кто это сделал. Еслиб игры делались в ассемблере нужно было бы тыщу лет, чтоб создать игру, но зато весили б совсем ничего.
avatar
Не будет этого, ибо язык программирования — это структурированный язык, в отличии от просто языка, который, в свою очередь гораздо более гибок, что, в свою очередь, и мешает использовать его в структурированных средах.
avatar
это можно сделать
avatar
Дерзай.
avatar
Все будут уметь программировать ровно так же, как все сегодня умеют писать и читать.
Сегодня большая часть населения не умеет грамотно писать, а это значит, что для программирования нужно будет создать среду, которая сможет понимать операнды, задаваемые пользователем. В итоге получиться, что для простенькой программы, которая в машкодах занимает пару килобайт, в лучшем случае, нужна будет прога на пару гигов, либо толстый канал в интернет, которые смогут понять, что же хотел сказать программист.
Хотя и сейчас ситуация близка к этому.
avatar
Ты так рассуждаешь, будто если даже все будут отлично читать и писать, то они будут так же программировать. Вон, кто умеет читать и писать на русском — пожалуйста есть язык 1С. Много из грамотных по русскому смогут в него? Любой умеющий читать/писать/говорить на английском сможет программировать, например на С? Нет. Помимо понимания значения слов и умения их написать есть еще синтаксис ЯП, парадигмы программирования, алгоритмистика в конце концов. О чем вы вообще, лол. Не будет такого никогда.
avatar
Помимо понимания значения слов и умения их написать есть еще синтаксис ЯП, парадигмы программирования, алгоритмистика в конце концов.
Именно. Либо, огроменная оболочка, которая сможет понять что -же хочет программист.
avatar
Будет такое, с той разницей, что обойдется без программиста. Придет время и все сведется к тому что будет система, которой, если немного утрировать, нужно будет скормить блок-схему, входные данные и ожидаемый результат. Все. Весь код будет писать эта машина. Программист будет не нужен. Даже не нужно будет его тестировать, поскольку такая систему будет способна к самотестированию. Нужен будет аналитик, который будет анализировать бизнес-процессы и готовить входные данные. Это будет возможно с развитием квантовых машин, вероятно не скоро.

А что касается языка. Нет такой зависимости, по которой, например, если человек хорошо владеет английским, то из него получится хороший программист, или вообще получится хоть какой-нибудь. Зато есть обратная — занимаясь программированием можно неплохо подкачать английский язык.
avatar
Так это уже есть. :) Тут пишут про ошибки. Ну ничо, такой вычислитель как мозг, вполне себе эти ошибки в голове исправляет.


Вопрос же только в том что объект должен получить задачу и выдать результат… Вычислительные куски мяса, мнящие себя венцом природы выполняют не только это. Но ещё и сами себя питают, энергоэффективно, экологично, энергонезависимо.

Отсюда вытекает ещё один вопрос. Задумывается ли транзистор созданный нами, о смысле своей жизни?
avatar
Задумывается ли транзистор созданный нами, о смысле своей жизни?
А как ты думаешь — от чего они сгорают? Некоторые — даже стреляются, от безнадёжности… )
avatar
Я фанател от бэйсика, на Агат-9 еще развлекался на 5,25`` Потом нужно было для олимпиады и далее Visual Basic — трудно было, но у меня получалось. Именно тогда я понял, что программирование — это не мое — нет усидчивости, хотя есть способности…
  • djd
  • 0
avatar
Вообще упадок чувсвуется во всем. винда, таже 1с, айос тоже вроде не слишком удачная вышла.
Да что там говорить недавно старкрафт выпустил обновления и у всех укого в настройках системы разделитель, а не. перестали работать рампы (ступеньки и подьемы) Немыслемо
avatar
перестали работать рампы
код теперь пишут идиоты
avatar
Идиотов много и их труд дешёв. Для этого делают простые языки программирования. Боинг соврать не даст.
avatar
честно говоря, основная вина тут на эффективных менеджерах. Именно они говорят, что делать надо безблагодатное дерьмо. И они же нанимают дешевых идиотов.

А 25 лет назад программы писали благородные хакеры. Тогда это слово имело и другое значение. Хакер — это был человек, который не просто умел писать код, а очень глубоко знал внутреннюю сущность системы и умел создавать новое.
avatar
Вот у меня в закладочках лежат (с октября) рассуждения на как раз эту тему.

Классическое инженерное образование и культ гик-культуры — худшее, что случилось с прикладным IT. Хиковать за мониторами без малейшего навыка общения с живыми людьми внезапно стало почетно и высокооплачиваемо. Выжигаю такое в своих командах каленым железом.

Мой пойнт предельно простой: если ты не можешь внятно объяснить проект-менеджеру что именно ты делаешь, да так, что бы он понял, то мы не сработаемся. Прикладная разработка — это не про написание кода, не устану повторять. Это про общение с людьми и решение их проблем.

К сожалению, многие современные компании идут все дальше и дальше по этому порочному пути, превращая менеджеров в нянек, а офисы — в игровые площадки для детей с аутизмом. Лучше на эти деньги закупите МДМА и проведите тимбилдинг.

Еще раз большими буквами: РАЗРАБОТЧИК ДОЛЖЕН ПОНЯТЬ БИЗНЕС ЗАДАЧУ И РЕШИТЬ ЕЕ ИНЖЕНЕРНЫМИ СРЕДСТВАМИ. От непонимания этого большинство проблем современного IT. Включая то же самое избыточное использование фреймворков о котором устал говорить @andrey_sitnik

И «Великая битва за говнокод» из этой же истории. Банальное неумение вежливо указать коллеге на ошибки защищается как священная корова. Ребята, это не про честность, а про отсутствие навыков коммуникации.

Я редко пишу про программирование потому, что код и технологии сами по себе — одна из самых скучных в IT вещей. Ой-ой, еще один новый фреймворк, ой-ой, а вот мы все сейчас перейдем на функциональный стиль. Все это вообще НИКАК не решает те задачи, для которых нас нанимали.

Сильно удивляют реплаи «мы что, должны телепатически понимать что нужно бизнесу?». Нет, вы должны уметь сформулировать и задать вопросы продакт оунеру. И если нужно, убедить его изменить задачу. Не умёте? Вы тогда codemonkey, а не разработчик.

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.