NASA i tworzenie oprogramowania
NASA wysyła ludzi w kosmos, lądowniki na Marsa, satelity na orbitę. NASA robi zaawansowaną technologię. Tak zaawansowaną, że większość z nas może ją co najwyżej pooglądać w telewizji. Tak zaawansowaną, że web2.0 się chowa. Twitter nie jest tak hi-tech jak oprogramowanie sterujące robotem na Marsie. Nawet w 10%.
Na przestrzeni lat inżynierowie NASA zaliczyli co prawda parę spektakularnych wpadek (tu coś wybuchło, tam pomylili metry ze stopami, etc.) ale nauczyli się i teraz już działa. Oprogramowanie większości orbitujących nad nami satelit działa bez zarzutu 24h/dobę, w podstawowym oprogramowaniu stacji orbitalnej też bugów nie uświadczysz.
To, co może być zaskakujące, to to, że najbardziej zaawansowana technologia na świecie jest tworzona z wykorzystaniem niemal antycznych języków programowania (C, assembler). Fakt, że NASA nie wysyła w kosmos programów w Rubym czy Pythonie o czymś musi świadczyć…
Myślę, że często tworząc oprogramowanie (w tym webowe) przecenia się konieczność stosowania najnowszych technologii. Myślę, że warto przestać podniecać się AJAXem, Google Web Toolkit czy Ruby on Rails tylko usiąść i zacząć robić dobre oprogramowanie.
Bo jakoś tak się składa, że programistów ocenia się za wspaniałe oprogramowanie a nie za wspaniale napisane oprogramowanie. Wszystkim imponuje lądowanie na Marsie, nikomu program w Haskellu który na Marsie nie wylądował.
2009-08-03 o godz. 18:41
“Twitter nie jest tak hi-tech jak oprogramowanie sterujące robotem na Marsie. Nawet w 10%.” Twitter w żadnym stopniu nie jest hi-tech, nie ma tam ani jednej skomplikowanej funkcji, której nie napisałoby większość programistów.
A asm i c wykorzystywane są dlatego, że są najwydajniejsze i łatwiej operować na procesorze i pamięci.
2009-08-04 o godz. 10:08
niestety coraz więcej wkoło nas eksperymentalnych, innowacyjnych środowisk testowych
2009-08-05 o godz. 21:35
No to ja przepraszam, ale chyba ostatniego akapitu nie zrozumiałem. Że niby nikt nie zachwyca się dobrze napisanym oprogramowaniem? Pozwolę się nie zgodzić. Ja właśnie myślę, że teraz w momencie gdy coraz większą wagę przywiązuje się do jakości tworzonego kodu jest czas na to by się pozachwycać środkiem. I przynajmniej ja miałem możliwość pracowania wśród ludzi, którzy tego mnie nauczyli i teraz ja staram się nieść ten ogarek ;>
Dlaczego NASA używa antyków? Bo niestety NASA nie może sobie pozwolić, na kolejne super wpadki. Wszystko musi być *kosmicznie* przetestowane i dlatego do niedawna do sterowania urządzeniami w kosmosie używało się 8-bitowców. Dlaczego? Bo je już tak rozpracowano (w dużej mierze dzięki braci scenowej) że te maszyny praktycznie nie kryją tajemnic. Ktoś pamięta wadę jednostki zmienoprzecinkowej we wczesnych Pentium? A późniejsze mniejsze i większe wpadki Intela, AMD?
I wydaje mi się, że pomysł to jedno, ale realizacja to druga sprawa. Można mieć świetny pomysł (Twitter), ale czy koniecznie trzeba go pisać w Assemblerze (da się!) albo w C (też się da!) by zostać docenionym za jakoś? Bez przesady. Odpowiednie narzędzie do odpowiedniego zadania. Rzeźbienie byle-czego za pomocą agrafki nie spowoduje, że rzeźba nagle stanie się “lepsza” czy bardziej godna podziwu. Będzie tak samo fatalna, jak była. Bo to nie narzędzie stanowi o jakości, tylko samo podejście.
howgh :)
2009-08-07 o godz. 12:19
Dodałbym jeszcze jeden argument: wyniesienie w kosmos każdego grama daje się przeliczyć na bardzo konkretną ilość dolarów a podejrzewam, że i każdy wat zasilania również (chociażby w wadze baterii słonecznych). Wydaje się więc prawdopodobne, że opłaca się zainwestować w czas pracy programistów, niech optymalizują każdy bit, i dostać możliwie najmniejszy i optymalny system.
2009-09-30 o godz. 21:20
[…] jakiś czas temu o NASA i tworzeniu oprogramowania. Zebrało się pod wpisem parę komentarzy, z których wynikało że mój wpis zupełnie nie […]