Заметки из мира IT

В стиле минимализм

А давайте сравним парочку одних из самых унылых языков программирования VB(.NET) и Java? Хотя потребность в существовании VB.NET при наличие такого языка как C#...
http://dynamic.versusit.ru/Files/2013/bda2b059-d2f5-4751-95b7-d05c9b439605.png

А давайте сравним парочку одних из самых унылых языков программирования VB(.NET) и Java? Хотя потребность в существовании VB.NET при наличие такого языка как C# отсутствует напрочь, однако язык все еще жив и ходят слухи, что на нем до сих пор пишут какое-то ущербное ПО. Но каким бы унылым он не был сам по себе любопытно то, что по функционалу язык значительно обходит Java. Хотя Java многие почему-то считают зрелым и взрослым решением. Сейчас я расскажу вам, что это не так, и VB.NET при всей своей ущербности на голову выше Java.

Когда-то, году в 1998, Ява, на фоне Delphi и C++ была прорывом. Хотя идея байт-кода была к тому моменту обкатана Microsoft на ранних версиях VB, но всё равно тогда казалось, что она решит все основные проблемы – гемморой с указателями и адресной арифметикой, сборкой мусора, ООП. Но время шло, язык развивался. Для начала для тех, кто застрял во временах zx-spectrum хочу сказать, что Бейсик уже не тот. Строки нумеровать не надо, GOTO за пределы метода использовать нельзя, ах да, методы, объекты, классы, интерфейсы, наследование исключения и вообще всё то, чем так гордились программисты 90-ых (и реализовали это в яве) там давно уже есть.

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

Partial Classes. Есть в Visual Basic и полностью отсутствуют в Java. В итоге один класс, один файл, один фюррер и совершенно отвратительные средства визуального программирования. Visual Studio когда вы нарисовали окно (или схему базы данных в Entity Framework), вам содается два файла описывающих класс – один, который студия будет править как хочет, во второй она лезть не будет. В ответ на это java программисты ругаются, что истинные джедаи мышкой не программируют, но это из серии любимого линуксоидами «не нужен».

Свойства классов. В Java программисты мучаются с геттерами и сеттерами, что захламляет код. В Visual Basic для них есть вполне красивая конструкция языка.

Лямбда выражения. Да, в VB.NET они есть. В Java их обещают уже долгие года, но видимо так никогда и не сделают.

Функции высшего порядка. В Java отсутствуют. Будут ли они когда-нибудь неизвестно. При этом VB-программисты их давно используют в LINQ и не парятся.

Ах, да, LINQ. Грустно промолчим. Так же грустно промолчим про замыкания.

И да, на Visual Basic вполне можно писать в функциональном стиле. Хотя и без pattern matching, но его нет даже в этом вашем Python, а такими темпами развития языка есть шансы на его появление в следующей версии языка (в родственном F# уже есть).

Параллельное и асинхронное программирования, после выхода .NET Framework версий 4 и 4.5, стало на несколько порядков более простым.




Скорость работы. Тут у Java всё грустно. В большом Ынтерпрайзе, конечно всегда можно купить новый сервер, а то и частное облако, но обычный пользователь, при запуске приложения написанного на Яве, испытывает острое желание взять выкурить сигарету, выпить кофе, съесть ещё этих мягких французских булочек, а также взять тяжёлый и тупой предмет и пойти поискать разработчиков. Программы на VB стартуют практически мгновенно.

Исключения. Вот тут Java слегка впереди, так как checked exceptions заставляет программистов всё-таки иногда проверять их. Хотя всё равно это никто не делает, банально собирая их где-то на вершине иерархии в логи, с надеждой, что «если упадёт прочитаем». Да и вообще, после появления в Visual Basic кортежей, часто стоит вопрос: кидать тормозные исключения на каждый чих, или вернуть таки кортеж?

Библиотеки. Вот тут всё не так просто. Именно большое количество написанных библиотек удерживает программистов даже на таких ублюдочных языках как PHP. За время существования Java их тоже написали много (VB хоть и существовал дольше, но после перехода с 6-ой версии на VB.NET обратная совместимость была потеряна). Хотя качество этих библиотек вызывает вопросы. При наличии Entity Framewok и NHibernate, большинство программистов, без особо специфических запросов, выбирают первую. Да, потому, что Linq и потому, что удобнее. После появления ASP.MVC проект портирования Spring на .NET заглох. Оно оказалось никому не нужно.

Многоплатформенность. Здесь явно преимущество у Java. Mono есть, но в плане поддержки VB слегка отстает от .NET Framework. Но если не особо нужны новые функции асинхронного программирования, то писать можно. Хотя и не под специфические платформы типа QNX.

А что в итоге? А в итоге ынтерпрайзный язык «для больших» застрял где-то в 90-ые. Игрушечный VB, наоборот, превратился в мощный мультипарадигменный язык. Ах да, когда-то уже был такой интерпрайз язык, который слабо развивался, но код на нём иногда приходится поддерживать до сих пор. И шутка про new COBOL становится с каждым годом всё более и более печальной…

admin

Яндекс.Метрика