To trudne zadanie - decyzja o "materiale na dom". Czy będzie to cegła, lód, czy wielka płyta, o wszystkim przesądza przeznaczenie finalnego produktu. Dyskusja toczy się na płaszczyźnie zawodowej między programistami i busuness’owej między decydentami i zatrudnionymi przez nich pracownikami. Miała miejsce już w niemowlęctwie infomatyki, ale tak naprawdę narzędzie jest obojętne byle dobrze spełniało swoje zadania. Obawiam się jednak spłycania tematu. Duża część ortodoksyjnych programistów tzw. klasyków wywodzących swoje upodobania wprost z lektur Niklaus’a Wirth’a często gustuje w klonach leksykalnych C np. javie, która oprócz podobieństwa składni jest kompromisem wydajności i prostoty międzysystemowej implementacji. Visual Basic 6 to mój faworyt, który w szybkości kończenia projektów nie ma sobie równych. A co mówią o tym inni?
„Visual Basic zburzył wszystkie prognozy sprzedaży. W końcu, stworzono prosty sposób tworzenia aplikacji dla Windows! Kiedy nasz przyjaciel z Borlanda, Philipe Kahn, polubił Visual Basic, wiedzieliśmy, że wygraliśmy. Zwrot ‘napisz aplikację w VB, aby to zrobić’ zdobył swój status w żargonie Microsoftu i był uogólniany. Potrzebujesz pomalować dom? Napisz aplikację VB, aby to zrobić”
Jeff Webb
A więc business powalił na kolana klasyków z Borlanda! Należy wytknąć bezpłodność dyskursu o lepszych i gorszych językach programowania, tych szlachetnych i tych marnych. Płytki dyskutant wszystko co ma w treści „BASIC” nazwałby plebsem, a co wywodzi się z "C" arystokracją. Cóż znam lepsze linie demarkacyjne choćby zarządzanie pamięcią. Prawdziwy „klasyk” udostępnia przydzielanie i zwalnianie pamięci. W tym sensie VB jest tym gorszym ponieważ ma wbudowany mechanizm memory managera zdejmujący z nas obowiązek zarządzania cyklem życia obiektów (można to robić wykorzystując zmienne globalne i klauzulę "nothing", ale szczerze tego nie polecam), ale już w C++.NET po użyciu klas zarządzanych „__gc” destruktory są niepotrzebne. Czy zatem C++.NET jest szlachetny? O obiektowości i strukturalności nie wspomnę, bo są to już wymogi, które Visual Basic spełnia na równi z klasykami (oczywiście wnikliwy dyskutant wytknąłby VB6 brak dziedziczenia klas, ale sprytny programista obejdzie ten niuans obudowując klasę bazową traktowaną jako interfejs VB6 własną klasą [wrapping class]). Quazi-Obiektowy jest jednak VBS ponieważ nie można tworzyć własnych i dziedziczyć innych klas, tylko zakładać instancje obiektów COM lub wbudowanych np. "Scripting.FileSystemObject". Należy wspomnieć, iż przyjęte, lecz nieustandaryzowane ogólnie kryterium obiektowośći obejmuje możliwość definiowania klas, ukrywanie, dziedziczenie i polimorfizm. Zatem obiektowości nie należy uważać za znak markowy rozwiązań klasycznych, chyba, że wytyczymy sztywne jej atrybuty ważąc realizację każdej z jej aspektów (enkapsulację, polimorfizm, dziedziczenie, abstrakcje, przeciążanie typów) w poszczególnych językach programowania. Tylko po co? A co z aplikacjami sieciowymi?
„Niezależnie od tego jak przekonywujący był marketingowy komunikat Microsoftu (‘po prostu używaj technologii .NET – możesz nam zaufać’), większość klientów tej firmy nadal używa C, C++, VB6 lub klasycznego ASP […]. Ci którzy zdecydowali się na technologię .NET, w zdecydowanej większości korzystają wyłącznie z ASP.NET […]” Joel Spolsky
I dalej:
„To z kolei oznacza, że interfejs API firmy Microsoft traci na znaczeniu, ponieważ aplikacje internetowe w ogóle nie wymagają systemu Windows.” Joel Spolsky
Zatem do samodzielnych aplikacji używałbym VB6 (lub jakiegoś C jakbym chciał robić straik włoski), a do aplikacji internetowych javy. Ale to tylko moje prywatne zdanie (oparte m.in. o przytoczone przemyślenia Joel'a) dotyczące względnie małych projektów.
Jeszcze inni języki skryptowe uważają za sierocą odmianę ich kompilowalnych kuzynów! Cóż zatem java z jej binariami, byłaby jak półsierota, jak bidula zdeklasowana przez Visual Basica! Z drugiej strony kompilując projekty do p-code robimy z VB interpretera p-instrukcji, a to tylko jedna opcja w ustawieniach kompilatora, deklasująca język z punktu widzenia przyjętego kryterium skryptowości!!!
Pozostaje jeszcze kwestia Clarion’a, który zdaje się być mrzonką w rodzaju bajania o sztucznej inteligencji. Automatyczne generowanie kodu na podstawie relacyjnego, czy herarchicznego modelu danych (automatic bottom-up programing) tworzy koszmarki programistyczne w rodzaju bleblania papugi, której wydaje się, że potrafi mówić. Moi drodzy mózgu nic nie zastąpi, ani Clarion, który jest przeciwnym biegunem strukturalnych klasyków, ani akademickie sny oderwanych od życia napompowanych wiedzą bufonów - "astronałtów architektur" (epitet Joel Spolsky). Zdrowy rozsądek i inteligencja to najlepsze drogowskazy w informatycznej dżungli. Piotr Jedynak
var sImp function ReturnTxt() ReturnTxt=_ InputBox("Podaj liczbę:" +_ vbCrLf+"1-255" +_ vbCrLf +"lub literę",_ "Ascii Conwenter",sImp) end function sImp=ReturnTxt Do while sImp<>"" if isnumeric(sImp) then if sImp<256 and sImp>0 then msgbox sImp & _ " jest " & chr(sImp)_ ,vbInformation,"Rezultat" end if else msgbox sImp & _ " jest " & asc(sImp),_ vbInformation,"Rezultat" end if sImp=ReturnTxt Loop
„Żadnej ‘etykosfery’ za panowania Billa Gatesa i jego cesarstwa (Microsoftu) oczywiście nie ma.”