BV писал(а):VB6 мёртв, и уже давно. Печально, да, но любишь -- отпусти!
VB6 мёртв только в головах тех, кто вбил себе мысль, что он мёртв.
Формально, пока жив PE-формат и WinAPI работают в новых ОС, нет смысла считать хороший (особенно для своей сферы) инструмент мёртвым. То, что какая-то антивирусная контора творит произвол, это не проблема инструмента. Понятно, что огромный пласт разработчиков не желает больше возвращаться к VB6, но у большинства причины скорее идеологические, нежели технические — боязнь показаться непрогрессивным/ретроградом (что в отрасли с быстрым пргрессом чуть ли не повод для предания анафеме), сложности с объяснением/обоснованием, почему для решения задачи нужно применять инструмент, который больше не поддерживается разработчиком и, о ужас, признан им устаревшим.
Но если ты знаешь реальную цену инструменту, знаешь и о позорных местах и о сильных сторонах инструмента, и понимаешь, что в данной ситуации этот инструмент будет удобнее других — не вижу смысла отказывать себе.
Я не смотрел RAD Studio, но уверен, что ему не доплюнуть до VB6 в ряде вопросов, и причина здесь не в том, что разработчики там не дотягивают до тех, что создали VB6 или что продукт недоработан.
Причина в уникальной концепции, заложенной в VB6. Я не говорю, что это уникально хорошая концепция — я имею в виду то, что я не видел больше нигде чего-то подобного. В других IDE, как ни крути, IDE являешься лишь побочной примочкой к компилятору. Здесь же IDE сама является компилятором, часть этапов, составляющих компиляцию, происходит непосредственно в момент ввода кода, остальная же часть делается по JIT-принципу и с минимальными телодвижениями между перезапусками.
В 98-ом году такая архитектура давала то, что эквивалентный проект на С/С++ компилировался и линковался 30 секунд, а проект на VB6 запускался почти мгновенно. Помимо этого, за 20 лет по-моему не появилось ничего, где был бы настолько же мощный Immediate Pane и настолько гибкая возможность запаузить проект, попереписывать кучу кода, и продолжить его выполнение. И дело не в том, что у других RAD-ов разработчики слабые, а в том, что сама концепция языка, технологии компиляции/сборки очень удачна (и видимо заранее была такой избрана в угоду RAD-ности).
Кроме того, какой другой язык или среда имеет такую степень родства и встроенной поддержки COM и OLE Automation? Где ещё объекты априори являются COM-объектами, где ещё можно так же легко запрограммировать объект/класс, которые может быть создан и использован из кучи сред (например из vbs-скрипта или js-скрипта, причём с удалённой машины), или создать расширение проводника/IE, автокада, или какой-нибудь плагин/хендлер для Windows?
Создать объект (контрол), который может быть встроен на HTML-страницу в IE, или наоборот, в своё приложение встроить IE-контрол и из приложения рулить объектной моделью страницы, взаимодействовать с JS-скриптами? Это можно и на чистом Си всё сделать, но где ещё это можно сделать настолько легко и быстро, как в VB6?
Создать проект типа ActiveX EXE, создать в нём класс, который делает
Implements некоторого чужого заранее оговоренного интерфейса, понапихать в реализации членов этого интерфейса ключевое слово
Stop, запустить проект на отладку (не компилируя в EXE/DLL!), дождаться и поймать момент, когда чужой хост создаст экземпляр нашего класса и дёрнет метод интерфейса,
и только в этот момент начать писать настоящую реализацию вызванного метода. Какой ещё RAD позволяет использовать такую механику работы? Т.е. не так, что сначала мы пишем метод, а потом его вызывают, а сначала метод вызывают, а потом мы его пишем.
Я много раз использовал такой сценарий работы, когда надо написать нечто, что будет взаимодействовать со сторонним приложением (путём отдачи ему объекта, реализующего нужный интерфейс) — когда начинаешь работать с чем-то ранее незнакомым, зачастую не знаешь, какие методы интерфейса «обратной связи» в каких обстоятельствах будут вызваны/сгенерированы, и какие аргументы будут переданы. И подход «поймай момент и попробуй поиграться с реализацией» помогает очень быстро встать на рельсы взаимодействия с новым неизвестным сторонним приложением/средой/системой.