RSS

Za dużo jest programistów... niedouczonych!

Liczba odsłon: 29

Bjarne Stroustrup, twórca definicji języka C++, jest niekwestionowanym autorytetem w dziedzinie języków programowania i oprogramowania w ogóle. Z tego powodu polecam wszystkim przeczytanie wywiadu, jaki przeprowadził z nim serwis TechnologyReview.com.

Mój ulubiony fragment to:

The idea of programming as a semiskilled task, practiced by people with a few months' training, is dangerous. We wouldn't tolerate plumbers or accountants that poorly educated. We don't have as an aim that architecture (of buildings) and engineering (of bridges and trains) should become more accessible to people with progressively less training. Indeed, one serious problem is that currently, too many software developers are undereducated and undertrained.

Zgadzam się z powyższym w pełnym zakresie. Tworzenie nowych języków programowania po to, by programowanie było łatwiejsze, bez zwracania uwagi na jakość generowanego kodu (a przede wszystkim na szybkość realizacji programów i ich oszczędność) jest według mnie najgorszym, co można zrobić.


No tak, ale kto by korzystal z uslug wspomnianych (niedouczonych) programistow? Analogicznie: kto kontruktorowi-amatorowi pozwoli postawic most? W gre co najwyzej wchodzi wiejska kladka.
Czytajac o "nowych jezykach", na mysl przychodza mi wynalazki typu JavaScript, PHP. Bedac na takim poziomie, nikt nie bedzie sie porywal na pisanie systemow operacyjnych (bo i jak?). Wypowiadam sie bardzo ogolnie; temat mozna rozwinac – chocby i w strone: kto najbardziej narazony jest na "dzikich deweloperow"? Moim zdaniem spolecznosc darmowego oprogramowania.
Czasami co innego jest ważniejsze niż wydajność kodu, np. jego czytelność i łatwość modyfikacji. W takiej sytuacji prosty język skryptowy może być lepszy niż C albo C++.
Ceną za czytelność i łatwość modyfikacji nigdy nie może być wydajność kodu i jakość aplikacji.
Język skryptowy jest przeznaczony – jak sama nazwa wskazuje – do automatyzowania zadań wykonywanych ręcznie, czyli do pisania makroprogramów. Poważniejsze zadania, wymagające programu pisanego „pod klucz”, automatyzuje się Javą czy C#. Jednak poważne programy aplikacyjne należy według mnie pisać wyłącznie w językach dających kod najwyższej jakości i najoszczędniejszy.
"Ceną za czytelność i łatwość modyfikacji nigdy nie może być wydajność kodu i jakość aplikacji."

Ależ nie tylko może, ale również często i musi. Optymalizacja kodu często komplikuje jego strukturę i zmniejsza czytelność. Wiem to dobrze z własnego doświadczenia w pisaniu programów numerycznych do pracy.

"Jednak poważne programy aplikacyjne należy według mnie pisać wyłącznie w językach dających kod najwyższej jakości i najoszczędniejszy."

Zdefiniuj jakość kodu... To zależy od tego, jakie są wymagania użytkownika. Programy pisze się, żeby jak najmniejszym kosztem rozwiązać pewien problem w sposób zadowalający odbiorcę. Jeżeli optymalizacja kodu będzie kosztowała więcej niż kupno szybszego procesora, to drugie może się okazać lepszym wyjściem.

Nie zapominaj również, że kod może być mocno zoptymalizowany, ale nieczytelny. Wówczas jego utrzymywanie i rozwijanie będzie trudne i kosztowne. Pozorna oszczędność w długim okresie zemści się.
@bmoll: W Internecie przykładów jest wiele.

@Roman Werpachowski: Zapraszam do normy ISO/IEC 9899:1999. Tam znajdziesz odpowiedzi na swoje pytania. To ja mam odwrotną sytuację. Jak kompaktuję kod to jest mniej zawiły, jednak zabiera to dużo czasu, ale gra jest warta świeczki. Dla kogo mocno zoptymalizowany kod może być nieczytelny? Nie zawsze można zastosować szybszy procesor.

Za dużo pseudoprogramistów, niestety.


"To ja mam odwrotną sytuację. Jak kompaktuję kod to jest mniej zawiły, jednak zabiera to dużo czasu, ale gra jest warta świeczki."

No to świetnie, ale często jest inaczej.

"Dla kogo mocno zoptymalizowany kod może być nieczytelny?"

Dla kogoś kto przejmie program po Tobie, a nawet dla Ciebie kiedy wrócisz do programu za pół roku. Komentarze komentarzami.
@Roman Werpachowski:
Ależ nie tylko może, ale również często i musi. Optymalizacja kodu często komplikuje jego strukturę i zmniejsza czytelność.
Optymalizacja to co innego, niż wybór nieekonomicznego języka programowania. Ale mimo to, od optymalizacji nie ucieknie się. Czytelność można częściowo zachować dobrze dokumentując kod (komentarze lub osobna dokumentacja), lub utrzymywać dwie wersje krytycznych czasowo procedur („czystą”, referencyjną, oraz zoptymalizowaną, używaną codziennie).
Nie chcę też wchodzić specjalnie w zagadnienie kosztów tworzenia programu, choć wiem, że tu leży jedna z ważniejszych przyczyn stosowania „prostych” języków i niedouczonych programistów. Z pozycji bardziej teoretycznej walczę tylko o dobry kod :)
"Czytelność można częściowo zachować dobrze dokumentując kod (komentarze lub osobna dokumentacja), lub utrzymywać dwie wersje krytycznych czasowo procedur („czystą”, referencyjną, oraz zoptymalizowaną, używaną codziennie)."

Komentarze – zgoda. Utrzymywanie dwóch wersji programu: masakra.