Znajomość języków programowania a rozmowa kwalifikacyjna

0

Witam,

Obecnie chodzę do szkoły średniej, ucze sie programowania, a po studiach chciałbym pracować w tej dziedzinie. Jakieś pół roku temu nauczyłem się C++ (można powiedzieć że znałem go od podszewki - włączając w to np. szczegółowe konstrukcje z szablonami jak np. klasy specjalizowane itp. itd.). Od tego czasu do teraz pisałem mniejsze programiki np. na SPOJa, które praktycznie nie wymagały programowania OO.

Problem w tym, że przez to zapomniałem praktycznie wszystkie niuanse C++ jak np. zaawansowane użycie tych klas/funkcji szablonowych, drobiazgi przy dziedziczeniu/funkcjach wirtualnych itp.

I teraz nie wiem co powinienem z tym zrobić - przeczytać połowę książki jeszcze raz żeby to wszystko sobie znowu przypomnieć i wymyślać następnie "na siłę" programy, które korzystają z tych wszystkich niuansów języka żeby znowu tego nie zapomnieć czy zostawić to tak jak jest.

Nie wiem co prawda jeszcze z jakim językiem czy językami będę wiązał swoją przyszłość zawodową bo w końcu jestem w liceum, ale chciałbym się zapytać czy jeżeli ktoś wpisze sobie do CV b. dobrą znajomość języka X to czy na rozmowie kwalifikacyjnej (czy podczas jakiegoś testu) będą konsekwentnie sprawdzać znajomość wszystkich tych drobiazgów języka X ?

3

Jakieś pół roku temu nauczyłem się C++ (można powiedzieć że znałem go od podszewki)

Tak Ci się tylko wydaje...
W pół roku możesz się nauczyć w miarę języka, ale jeśli napiszesz że znasz C++ 'w stopniu zaawansowanym' (szczególnie jeśli niezbyt używasz obiektowości) to na rozmowie kwalifikacyjnej wylecisz za oszukiwanie w CV.

0

Ja się właśnie dopiero niedawno dowiedziałem, że for-comprehensions w Scali to coś bardzo podobnego do do-notation z Haskella. Teraz spróbuję zrozumieć kontynuacje i call/cc. Kontynuacje czy monady można zaimplementować w wielu językach, ale czy ich nieznajomość oznacza, że nie znamy tych języków?

Stopień zaawansowany to pojęcie względne :P

Szybki test znajomości Javy:
Jest sobie metoda Collections.sort: http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#sort(java.util.List) o sygnaturze: public static <T extends Comparable<? super T>> void sort(List<T> list). O co biega w tej sygnaturze/ dlaczego tak wygląda?

3

I teraz nie wiem co powinienem z tym zrobić - przeczytać połowę książki jeszcze raz żeby to wszystko sobie znowu przypomnieć i wymyślać następnie "na siłę" programy, które korzystają z tych wszystkich niuansów języka żeby znowu tego nie zapomnieć czy zostawić to tak jak jest.

Zupełnie bez sensu. Programowania nie uczysz się z książki. Gdybyś te wszystkie bardzo zaawansowane rzeczy robił na codzień, w praktyce, to byś nigdy nie zapomniał.
Jak z jazdą samochodem - możesz o niej czytać i czytać, i znać teorię na pamięć. Miesiąc po przeczytaniu nie będziesz pamiętał gdzie hamulec gazu, a gdzie sprzęgło.

IMHO uczenie się programowania z książek to strata czasu. Praktyka + dokumentacja, to jest to.

1
aurel napisał(a):

IMHO uczenie się programowania z książek to strata czasu. Praktyka + dokumentacja, to jest to.

Przesadzasz, kochana, przesadzasz ;] Książki pokazują m. in. dobre praktyki i możliwe do popełnienia błędy, czego nie robi normalna dokumentacja techniczna. Nauka na błędach jest najlepsza, ale lepiej jeżeli możemy uczyć się na cudzych. Co do nauki z dokumentacji to polecam zapoznanie się z http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.5.1.0/Control-Applicative.html - bez przerobienia książki lub naprawdę dobrego tutoriala możesz mieć spore problemy ze zrozumieniem i zastosowaniem w praktyce. Prawie wszystkie dokumentacje bibliotek Haskella składają się z sygnatury typu i pojedynczego zdania komentarza dla danego elementu, przyjmuje się, że użytkownik posiada potrzebną wiedzę teoretyczną.

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