Programowanie

Wybór Platformy Językowej

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

  • Kontrolki ActiveX do wykorzystania w Twoich Aplikacjach lub stronach www.
  • Komponenty Towarzyszące (ActiveX DLL - wywoływane ze skryptów VBS lub VBA) używające przestrzeni i stosu Twojej Aplikacji nie tylko dla ziększenia wydajności ale po to by niezależnie implementować dowolną logikę procesów business'owych Twojej Firmy!!!
  • Komponenty Zewnętrzne (ActiveX EXE - wywoływane ze skryptów VBS lub VBA) jako obiekty RAO na zewnętrznych klientach.
  • Skrypty VBS i VBA

Stanisław Lem powiedział:

„Żadnej ‘etykosfery’ za panowania Billa Gatesa i jego cesarstwa (Microsoftu) oczywiście nie ma.”