Abstrakcyjna abstrakcyjna informatyka

0

W wątku "Skąd te parcie na nowinki", w dziale "Kariera", @Shalom zasugerował, że technologie stają się coraz bardziej wysokopoziomowe. Czy można na tej podstawie wyciągnąć wniosek, że znajomość "klasycznej informatyki" (patrz np. programy studiów) staje się coraz mniej przydatna, bo mamy gotowce?

0

Nie rozumiejąc jak coś działa nie możesz w pełni wykorzystać tego możliwości. Ludzie programujący w językach skryptowych, nie znający żadnego języka niskiego poziomu bardzo często robią coś takiego:

var node;
node  = '<ul id="id">';
node += 'jakieś STAŁE li';
node += 'jakieś STAŁE li';
node += 'jakieś STAŁE li';
node += 'jakieś STAŁE li';
node += 'jakieś STAŁE li';
node += '</ul>';

Dlaczego to jest słabe wydajnościowo? Ano znając "coraz mniej przydatne" zagadnienia "klasycznej informatyki" powinieneś wiedzieć :)

0

Spróbuj łatwo napisać coś graficznego w C. Powodzenia ;)

0

Nie pytałem, czy "klasyczna informatyka" jest zbędna, lecz czy mniej (co nie oznacza, że wcale) potrzebna w programowaniu wysokopoziomowym.

0

Obecnie idzie się w kierunku reusability oraz wszystkorobiących frameworków. Z tego względu coraz bardziej wymaga się umiejętności wykorzystywania czegoś co już jest, a coraz mniej idzie się w stronie klepania samemu czegoś co już jest zrobione (czyli wynajdywania koła na nowo). Dzięki używaniu tego co już jest naklepane i używane przez innych zyskuje się wiele rzeczy. Jedna z nich to np to że np osobom postronnym łatwiej i szybciej czyta się kod - jeżeli w kodzie używam funkcji z jakiejś szeroko znanej biblioteki to zapewne spora część ludzi wie jak tak biblioteka i funkcje w niej działają. Dzięki temu mniej czasu schodzi na analizowanie czyjejś funkcji, wręcz często dzięki temu w ogóle redukuje się narzut do zera, gdyż jak jakaś biblioteka jest często używana to każdy pamięta co robi i się nawet chwili nie zastanawia. Druga zaleta używania gotowców to to, że gotowce już są przetestowane w boju. Trzecia zaleta to to, że gotowce mają swojego opiekuna, któremu można zgłaszać błędy i on się nimi zajmie - oszczędzamy tym samym czas, a czas to pieniądz. Z tego wszystkiego wynika, że znajomość gotowców czy też standardów jest coraz bardziej kluczowa.

A co do przydatności studiów - jak do tej pory nie zauważyłem, by studia jakoś mocno przygotowywały do roboty klepacza kodu, przynajmniej te moje na UJ. Studia pokazują informatykę z wielu stron, dają możliwość poznania bardzo wielu poddziedzin, dzięki czemu po skończeniu studiów ma się mniej więcej rozeznanie co nas interesuje najbardziej. Jak chcesz być przydatny w korpo to po prostu idź na staż do korpo, a potem zostań. Wiedza branżowa sama przyjdzie wraz z kolejnymi zadaniami.

3

Czy można na tej podstawie wyciągnąć wniosek, że znajomość "klasycznej informatyki" (patrz np. programy studiów) staje się coraz mniej przydatna, bo mamy gotowce?

Nie. Absolutnie nie.
Bo nie da się sensownie korzystać z takich "gotowców" jeśli sie ich nie rozumie. Pisałem też już o kiedyś o tym. Jeśli ktoś nie rozumie algorytmów i struktur danych, to będzie pisał takie kwiatki jak sprawdzanie czy jakiś element występuje w pewnym kontenerze danych za pomocą listy zamiast hashseta, bo nie będzie rozumiał że jest między nimi spora różnica (autentyczna sytuacja). Jak ktoś nie będzie rozumiał teorii automatów to będzie próbował parsować pewne ciągi wyrażeniami regularnymi, kiedy już na pierwszy rzut oka one będą najwyżej elementami języka bezkontekstowego i nijak wyrażenie regularne ich nie łyknie (autentyczna sytuacja).
Tak samo cóż ci po tym że masz milion bibliotek do obliczeń numerycznych, skoro nie wiesz czym się różni aproksymacja od interpolacji, oraz czym się różnią ich różne odmiany. Dla osoby która się tego nigdy nie uczyła to będzie tylko 10 czy 20 funkcji o tych samych parametrach i będą sobie z nich pewnie losować albo rzucać monetą / kostką ;]
Tak samo jak ktoś nie liźnie chociażby matematyki dyskretnej to będzie potem robił cuda na kiju zamiast policzyć coś w normalny sposób, albo zamiast policzyć że jego podejście wymaga sprawdzenia gigantycznej liczby przypadków i jest niemozliwe w realizacji.
Albo jak ktoś prześpi teorię złożoności obliczeniowej to potem będzie z uporem maniaka próbował rozwiązywać jakiegoś komiwojażera albo inny NP-zupełny problem nie rozumiejąc czemu jego podejście jest błędne...

Podsumowując: nie da się sensownie korzystać z gotowych komponentów / algorytmów jeśli się ich nie rozumie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1