Jest to ciąg dalszy wątku https://www.matematyka.pl/392980.htm, dyskusja/rozmowa zeszła z tematu C++ i listy napisanej w nim, na tematy okołoinformatyczne jak studia czy "jak zaczać programować coś poważnego?"
@lukequant jest mi troche głupio, że aż tyle czasu poświecasz na pisanie, ale też bardzo jestem Ci bardzo wdzięczny. Co do tej "kariery naukowej" i fizyki, to pod tym względem się wiele zmieniło, w liceum byłem pełen idealnego wyobrażenia sobie pracy naukowej w fizyce, pójście na studia fizyczne jednak je mocno zweryfikowało, do tego stopnia, że przeniosłem się na matematykę(na całe szczęście nie tracąc roku).
Matematyka mnie bardziej ciekawi, ale nie wiem czy chciałbym się nią zajmować zawodowo, dlatego też szukałem jakieś alternatywy, a od czasów licealnych trochę mnie interesowało programowanie (niestety stety jakieś tam sukcesy na OF spowodowały, że nie rozwijałem w ogóle zainteresowania informatyką), więc zwróciłem się teraz ku temu. Zacząłem praktycznie od pisania listy i spodobało mi się to na tyle, że zacząłem się interesować studiami i zajęciem się tym kiedyś zawodowo. Stąd te wszystkie pytania
Myślałem, żeby właśnie zrobić teraz 2. rok i na 3. roku matematyki dobrać informatykę (dużo przedmiotów mi odpada(matematycznych), więc nie powinienem mieć problemów z pisaniem licencjatu, a co dalej to nie wiem. Co do wyboru jaką częścią informatyki się zając, to nie mam pojęcia, ostatnio zacząłem nawet myśleć o algorytmice (algorytmy genetyczne/ewolucyjne mnie zauroczyły ), ale myślę, że to pytanie może poczekać.
Jeśli ktoś jeszcze zastanawiał się czy dla informatyka lepsze są studia matematyczne czy informatyczne to byłym wdzieczny gdyby coś naskrobał w tym wątku, a Tobie LukeQuant jeszcze raz dziękuję, wiele niejasności mi rozjaśniłeś (a Quorę przeglądnę, dzięki )
Studia informatyczne a matematyka
-
gabrysb1995
- Użytkownik

- Posty: 94
- Rejestracja: 12 mar 2011, o 14:27
- Płeć: Mężczyzna
- Lokalizacja: Przemyśl
- Podziękował: 27 razy
Studia informatyczne a matematyka
Ostatnio zmieniony 4 wrz 2015, o 16:10 przez Afish, łącznie zmieniany 1 raz.
Powód: Temat umieszczony w złym dziale.
Powód: Temat umieszczony w złym dziale.
-
Afish
- Moderator

- Posty: 2725
- Rejestracja: 15 cze 2008, o 15:45
- Płeć: Mężczyzna
- Lokalizacja: Seattle, WA
- Podziękował: 3 razy
- Pomógł: 356 razy
Studia informatyczne a matematyka
Ludzie mają złe wyobrażenie tego, co studiuje się na studiach informatycznych, przy czym mam tutaj na myśli porządny kierunek, a nie kolejną informatykę stosowaną na wydziale humanistycznym, których teraz jest cała masa. Informatyka to nie jest język programowania, to nie jest konfigurowanie linuksa przy użyciu konsoli, nie jest to także stawianie sieci komputerowej, chociaż bez któregokolwiek z tych elementów świat byłby zupełnie inny. Informatyka to przetwarzanie informacji, grube rozkminy algorytmiczne, różnorakie dowody matematyczne, ale też umiejętność wdrożenia rozwiązania przy użyciu dostępnych narzędzi.
Ludzie myślą, że znajomość języka programowania czyni z nich programistów. To nie jest niestety prawda. Pominę już fakt, że masa ludzi wpisuje sobie do CV beztrosko znajomość C i C++, a nie są w stanie rozróżnić tych języków, piszą w standardzie C89/90 (który ma już 25 lat) albo C++03 (który ma 12 lat), nie znają biblioteki standardowej i nie potrafią napisać czegoś sensownego bez dostępu do Stack Overflow. Znajomość języka to dopiero pierwszy i najprostszy krok. Tak jak w życiu - umiejętność czytania i pisania literek nie czyni z nas poetów, pisarzy czy dziennikarzy. Oprócz języka trzeba też znać bibliotekę standardową oraz narzędzia do podstawowych czynności jak operowanie JSON-em, XML-em, API systemowe, frameworki webowe i inne (oczywiście to zależy od dziedziny, programista mikrokontrolerów nie potrzebuje serwera webowego itp.). I znowu: ludzie wpisują do CV znajomość .NET-u lub Javy, a nie mają pojęcia o Large Object Heap lub edenie, nie wiedzą o IL-u czy bajtkodzie, kompletnie nie interesują się szczegółami implementacyjnymi środowiska. Jak już mamy w miarę dobrze opanowaną platformę, to dochodzi kolejny element - bazy danych. Masa osób myśli, że jeżeli napisali ze dwa joiny w SQL-u to mogą już go wpisać do CV, a nie mają pojęcia o budowie indeksu klastrowego, o B-drzewach, o CTE, o funkcjach okienkowych, o blokadach i zatrzaskach. Potem ludzie rzucają się na bazy NoSQL zauroczeni ich szybkością, ale dziwią się potem, że MongoDB gubi dane w sytuacji dużego obciążenia. Ta historia ciągnie się dalej na wielowątkowość, począwszy od powszechnych problemów jak race condition, a kończąc na problemach z false sharing, w których istnienie niektórzy nawet nie wierzą (vide niedawna dyskusja na 4p). Tak można długo.
Podobnie sprawa ma się w sytuacji rzeczywistego przetwarzania informacji. Sporo ludzi po studiach nie ma pojęcia, czym jest drzewo, co to jest maksymalny przepływ, co to jest turbomatching albo silnie spójna składowa. Ale nie wiedzą też czym jest ACID, CAP, SEC albo CRDT. Na rekrutacji trafiają się ludzie mający 20 lat doświadczenia, którzy nie potrafią odwrócić tablicy integerów w miejscu albo wypisać liczb od 0 do 100 korzystając z pętli
Do tego dochodzą kwestie pisania czystego kodu i eleganckiej architektury. Funkcje na 20 linii kodu, brak testów, prawo copy-paste to norma. Przez to kod jest nieutrzymywalny i w efekcie ludzie w CERN-ie wolą przepisać jakiś algorytm od zera niż poprawiać błędy w istniejącym, bo nie są w stanie go zrozumieć.
Oczywiście tacy ludzie bez problemu radzą sobie w pracy, bo większość pracy nie wymaga specjalnej wiedzy. Przepychanie danych z jednej bazy do drugiej przy użyciu formatek w przeglądarce nie jest trudne, nie wymaga studiów, a jedynie krótkiego przyuczenia do podstawowych narzędzi. Jednak czy tym właśnie jest informatyka?
Czy studia informatyczne są potrzebne do pracy programisty? Nie są. Można być programistą bez studiów i nie mieć problemu z wykonaniem pracy. Ale studia informatyczne (i informatyka) to nie tylko język. Ktoś kiedyś powiedział, że matematyka zaczyna się tam, gdzie kończą się liczby - w informatyce jest podobnie.
Ludzie myślą, że znajomość języka programowania czyni z nich programistów. To nie jest niestety prawda. Pominę już fakt, że masa ludzi wpisuje sobie do CV beztrosko znajomość C i C++, a nie są w stanie rozróżnić tych języków, piszą w standardzie C89/90 (który ma już 25 lat) albo C++03 (który ma 12 lat), nie znają biblioteki standardowej i nie potrafią napisać czegoś sensownego bez dostępu do Stack Overflow. Znajomość języka to dopiero pierwszy i najprostszy krok. Tak jak w życiu - umiejętność czytania i pisania literek nie czyni z nas poetów, pisarzy czy dziennikarzy. Oprócz języka trzeba też znać bibliotekę standardową oraz narzędzia do podstawowych czynności jak operowanie JSON-em, XML-em, API systemowe, frameworki webowe i inne (oczywiście to zależy od dziedziny, programista mikrokontrolerów nie potrzebuje serwera webowego itp.). I znowu: ludzie wpisują do CV znajomość .NET-u lub Javy, a nie mają pojęcia o Large Object Heap lub edenie, nie wiedzą o IL-u czy bajtkodzie, kompletnie nie interesują się szczegółami implementacyjnymi środowiska. Jak już mamy w miarę dobrze opanowaną platformę, to dochodzi kolejny element - bazy danych. Masa osób myśli, że jeżeli napisali ze dwa joiny w SQL-u to mogą już go wpisać do CV, a nie mają pojęcia o budowie indeksu klastrowego, o B-drzewach, o CTE, o funkcjach okienkowych, o blokadach i zatrzaskach. Potem ludzie rzucają się na bazy NoSQL zauroczeni ich szybkością, ale dziwią się potem, że MongoDB gubi dane w sytuacji dużego obciążenia. Ta historia ciągnie się dalej na wielowątkowość, począwszy od powszechnych problemów jak race condition, a kończąc na problemach z false sharing, w których istnienie niektórzy nawet nie wierzą (vide niedawna dyskusja na 4p). Tak można długo.
Podobnie sprawa ma się w sytuacji rzeczywistego przetwarzania informacji. Sporo ludzi po studiach nie ma pojęcia, czym jest drzewo, co to jest maksymalny przepływ, co to jest turbomatching albo silnie spójna składowa. Ale nie wiedzą też czym jest ACID, CAP, SEC albo CRDT. Na rekrutacji trafiają się ludzie mający 20 lat doświadczenia, którzy nie potrafią odwrócić tablicy integerów w miejscu albo wypisać liczb od 0 do 100 korzystając z pętli
for(int i=100;i>=0;--i), a to przecież podstawy podstaw. Jak potem taka osoba ma rozwiązywać problemy z klasy NP, modelować coś w ILP lub pisać systemy rozproszone?Do tego dochodzą kwestie pisania czystego kodu i eleganckiej architektury. Funkcje na 20 linii kodu, brak testów, prawo copy-paste to norma. Przez to kod jest nieutrzymywalny i w efekcie ludzie w CERN-ie wolą przepisać jakiś algorytm od zera niż poprawiać błędy w istniejącym, bo nie są w stanie go zrozumieć.
Oczywiście tacy ludzie bez problemu radzą sobie w pracy, bo większość pracy nie wymaga specjalnej wiedzy. Przepychanie danych z jednej bazy do drugiej przy użyciu formatek w przeglądarce nie jest trudne, nie wymaga studiów, a jedynie krótkiego przyuczenia do podstawowych narzędzi. Jednak czy tym właśnie jest informatyka?
Czy studia informatyczne są potrzebne do pracy programisty? Nie są. Można być programistą bez studiów i nie mieć problemu z wykonaniem pracy. Ale studia informatyczne (i informatyka) to nie tylko język. Ktoś kiedyś powiedział, że matematyka zaczyna się tam, gdzie kończą się liczby - w informatyce jest podobnie.
-
Lafoniz
- Użytkownik

- Posty: 104
- Rejestracja: 7 kwie 2014, o 17:58
- Płeć: Mężczyzna
- wiek: 28
- Lokalizacja: Szczecin
- Podziękował: 16 razy
- Pomógł: 4 razy
Studia informatyczne a matematyka
Kolega Afish ma jak najbardziej racje, zauważyć trzeba jednak, że myślenie o informatyce w sposób równoważny z programowaniem to już forma zaawansowanej definicji, oznaka zaangażowania. Może to wydawać się absurdalne, jednak większość ludzi postrzega informatykę jako naukę o komputerach (angielska nazwa tej dziedziny niespecjalne pomaga w tym niemiłym przykładzie). Osoba, która wyszła z tego paradygmatu myślenia o informatyce, według mnie zrobiła całkiem spory postęp.
Nie widzi już ona informatyka jako osoby podobnej do mechanika samochodowego, który zna dziesiątki modeli komputerów, potrafi je sprawnie rozłożyć oraz wymienić wszystkie wadliwe części. Nie zmienia to jednak faktu, że świat byłby lepszym miejscem, gdyby każdy człowiek zanim uda się na informatykę, sprawdził co to dokładnie oznacza. Duża część studentów, których znam wybrała informatykę, gdyż uwielbiali elektroniczną rozrywkę. Niestety, spotykali się potem z wielkim rozczarowaniem, kiedy musieli uczyć się matematyki...
Swego czasu udzielałem się na pewnym forum dla "programistów" (młodych ludzi, zajmujących się tym od niedawna). Potrafili się oni nauczyć danego języka (wysokiego poziomu), nawet byli w stanie dobrze zrozumieć zawarte w nim "polecenia", jednak mieli inny bardzo poważny problem. Większość ich programów miała totalnie skopaną konstrukcję. Nie wykorzystywali żadnych skomplikowanych algorytmów, a mimo tego widać było, że matematyka jest im obca i raczej nie chcą się z nią zaprzyjaźnić. Wiele z tych osób w przyszłości wybierze informatykę i będzie w gronie osób, które będą potem poprawiać matematykę, a mogliby tego uniknąć.
Nie widzi już ona informatyka jako osoby podobnej do mechanika samochodowego, który zna dziesiątki modeli komputerów, potrafi je sprawnie rozłożyć oraz wymienić wszystkie wadliwe części. Nie zmienia to jednak faktu, że świat byłby lepszym miejscem, gdyby każdy człowiek zanim uda się na informatykę, sprawdził co to dokładnie oznacza. Duża część studentów, których znam wybrała informatykę, gdyż uwielbiali elektroniczną rozrywkę. Niestety, spotykali się potem z wielkim rozczarowaniem, kiedy musieli uczyć się matematyki...
Swego czasu udzielałem się na pewnym forum dla "programistów" (młodych ludzi, zajmujących się tym od niedawna). Potrafili się oni nauczyć danego języka (wysokiego poziomu), nawet byli w stanie dobrze zrozumieć zawarte w nim "polecenia", jednak mieli inny bardzo poważny problem. Większość ich programów miała totalnie skopaną konstrukcję. Nie wykorzystywali żadnych skomplikowanych algorytmów, a mimo tego widać było, że matematyka jest im obca i raczej nie chcą się z nią zaprzyjaźnić. Wiele z tych osób w przyszłości wybierze informatykę i będzie w gronie osób, które będą potem poprawiać matematykę, a mogliby tego uniknąć.