Ciągle od zera
Niedawno pisałem o starcie projektu Zintegrowanego API. Dzisiaj więcej na temat mojej wizji tego projektu.
Przez ostatnie kilka lat powstało kilkanaście języków programowania. Każdy z nich był popularny przez jakiś czas, aby wszyscy o nim w końcu zapomnieli. W efekcie każdy przydatny fragment kodu napisany w danym języku jest bezwartościowy po paru latach. Są różne rozwiązania tego problemu. Najczęściej wymienianym jest środowisko uruchomieniowe, albo biblioteka funkcji. Pozwalają one dołączyć do projektu wiele możliwości takich jak komunikacja z dyskiem, przez internet, z systemem operacyjnym.
Nadal jednak mankamentem jest to, że biblioteki są przygotowywane pod konkretny język programowania albo środowisko. Tak więc mamy biblioteki dla Javy, mamy biblioteki .NET, Frameworki Javascriptu, biblioteki Flasha itd.
Część z tych bibliotek jest niezbędna i nie do zastąpienia. Są to sposoby komunikacji ze źródłami danych i interfejsem użytkownika.
Czy jest jednak jakaś część wspólna? Część powielana we wszystkich bibliotekach?
Z pewnością! Są to algorytmy sortowania, obsługi drzew, tekstowe, wyszukiwania, zaawansowane matematyczne i numeryczne. Ale nie tylko, ale o tym za chwilę.
Jak więc doprowadzić do sytuacji, aby ze wszystkich możliwych środowisk mieć dostęp do takich bardziej zaawansowanych metod bez potrzeby używania za każdym razem innej biblioteki, z innym nazewnictwem, sposobem używania, parametrami i dokumentacją?
Można do tego wykorzystać przecież Internet i udostępnić wszystko jako API.
Większość programów wkrótce i tak będzie dostępnych tylko przez przeglądarkę więc czemu nie? Dostęp do Internetu już dużo ludzi ma.
Taki kierunek reprezentuje na przykład Wolfram Alpha, które pozwala przez API pobierać różne dane statystyczne z przeróżnych raportów, zestawień dostępnych na świecie od fizyki, przez matematykę po zdrowie i historię. Ilość tych danych jest taka, że aż trudno wyobrazić sobie do czego będą mogły one zostać praktycznie wykorzystane.
WolframAlpha skupia się na udostępnianiu danych statystycznych, a nie algorytmów, czy funkcji bardziej ogólnych.
Wróćmy więc do bliższych przykładów, które można by wykorzystać już teraz.
Co by było gdyby wszystkie znane studentom informatyki algorytmy zapakować w jedno API, z którego mógłby korzystać każdy programista czy używa C++, C#, ActionScripta, Javascripta czy Flasha, PHP albo Nowego-Języka-Który-Podbije-Świat?
Oczywiście, że można zrobić, ale jaki z tego będzie pożytek?
Otóż taki:
- Jeden sposób dostępu do algorytmów niezależnie od języka programowania
- Możliwość używania języka odpowiedniego do potrzeb bez obawy, że nie ma do niego odpowiedniej biblioteki realizującej potrzebną funkcję
- Używanie najlepszych rozwiązań programistycznych na poziomie dziennym
- Nie rezygnowanie z innowacyjnych rozwiązań, które normalnie wymagałyby wiedzy eksperckiej do stworzenia odpowiednich algorytmów
- Nie potrzeba utrzymywać, testować i rozwijać kodu algorytmów zaczerpniętych z niewiadomych źródeł
Czy korzystanie z takiego API przez Internet będzie wydajne? Myślę że tak. Jeżeli weźmiemy pod uwagę zaawansowane, czasochłonne algorytmy, koszt przesłania danych i odebrania wyniku będzie miał mały udział procentowy.
Natomiast gdy problemy będą w miarę krótkie do realizacji to też użytkownik zyska. Po pierwsze czas na wdrożenie własnego rozwiązania, poznanie bibliotek.
Po drugie dodanie keszowania do takiego API pozwoliłoby jeszcze bardziej zwiększyć wydajność. Serwer nie musiałby nawet nic liczyć, jeżeli już wcześniej obliczył wynik dla danych argumentów wejściowych, co byłoby znacznie szybsze niż samemu prowadzić obliczenia i to na komputerze klienta albo własnym serwerze.
Jak wspomniałem nie chodzi tylko o algorytmy matematyczne. Jest o wiele więcej ciekawych klas problemów do rozwiązania przez takie API.
A moim ulubionym jest lingwistyka. W przypadku języka polskiego najbardziej prozaiczne przykłady to odmiana miesięcy czy imion przez przypadki „Drogi Mateuszu” albo „22 sierpnia 2009″.
Wyobrażam więc sobie sytuację, w której każdy może bardzo szybko zapewniać bogate możliwości dla swoich aplikacji, czy stron internetowych. Możliwość szybkiego tworzenia prototypów, uniezależnienie się od języków programowania, których ewolucja jest dobra, ale powoduje, że ciągle co parę lat tracimy masę naprawdę wartościowego kodu. Można by tworzyć projekty na zupełnie nowym poziomie jakości.
Jeżeli chcesz więcej poczytać to polecam ten wpis.
Dodaj komentarz
Subskrybuj komentarze do tego tekstu
Nie ma podobnych, ale te też są ciekawe
WordPress, Pool Theme - Borja Fernandez - mod

