-
1. Data: 2018-12-23 20:29:35
Temat: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
Od: s...@g...com
Witam
Ostatnio sobie przeczytałem artykuł z magazynu Programista pt. "Jaki język polecić
początkującemu?". A teraz pragnę go skomentować. Oto skrótowe przedstawienie
artykułu:
[Początki]
Co oczywiste każdy jakoś zaczynał. Autor artykułu zaczynał od Basic-a na Atari.
Następnie odkrył Pascal-a i Delphi by następnie zgłębiać C#. Ta ścieżka wynikała z
rosnących potrzeb rzekomo nie możliwych do realizacji w poprzednich technologiach.
[Prostota]
W nauce łatwo przyswajane są proste koncepcje i one powinny być "pierwszym rzutem".
[Oczekiwania]
Szybkie efekty są pożądane w przypadku nauki programowania.
[Wszechstronność i C-style]
"Oprogramowanie interfejsu użytkownika w C++ to mordęga - na pewno w porównaniu z
rozwiązaniami dostępnymi w C# albo Delphi." "Aplikacji webowych w C++ współcześnie
się raczej nie pisze (a przynajmniej nie słyszałem o żadnym takim przypadku), mobilne
wprawdzie się da, ale wszyscy producenci dosyć zdecydowanie sugerują, by raczej
trzymać się języków, które zostały na daną platformę specjalnie przygotowane
(Java/C#/Swift lub Objective-C)."
"W mojej ocenie nauczenie kogoś języka C-style niesie ze sobą bardzo dużo korzyści."
Teraz mój komentarz:
[odnośnie Początki]
Jak się okazuje ważne w życiu jest zaczęcie marszu od wybicia się z właściwej nogi. W
moim przypadku był to Asember x86. Dlaczego? Wydawało mi się, że da on dobre pojęcie
o tym jak właściwie działa komputer. Zależało mi na tym by dobrze go zrozumieć gdyż
dysponowałem jedynie znajomością systemu dwójkowego. Drugim krokiem mojej nauki była
nauka C++. Wynikało to z tego, że C to język systemów operacyjnych (obok Asemblera) i
jest on naturalnym (wstępnym) stadium nauki C++. C++ w owym czasie był językiem
aplikacji (Java była za wolna na tamtych komputerach i dziś w wielu miejscach nadal
tak jest, C# wtedy nie istniał).
[odnośnie Prostota]
Prostota tak, ale przede wszystkim ZROZUMIENIE. Można nauczyć kogoś wywoływania
różnych funkcji w JavaScript ale raczej nie przybliży mu to jak działa procesor, ani
co tak na prawdę jest niepodzielnym rozkazem dla programisty. W sumie jak mamy kogoś
uczyć wywołań różnych funkcji to czemu nie w Bash-u albo w Python-ie? Zakres
użyteczności dużo większy niż JavaScript-u.
[odnośnie Oczekiwania]
W nauce trzeba zawrzeć rodzaj kontraktu: uczymy się 3 miesiące i będziemy umieć to i
to. Albo: uczymy się rok i będziemy umieć TO i TO i TO.
W ciągu 3 miesięcy faktycznie może nie być czasu na nic więcej niż parę tagów w Html
plus wywołania kilku funkcji w JavaScript plus wyświetlanie jakiejś grafiki plus
jakieś dźwięki.
Jednak może to być jedynie zachęta do poważnej nauki.
Moim zdaniem kurs minimum to rok podzielony na 3 etapy dotyczące WIEDZY ELEMENTARNEJ
w pracy przyszłego programisty:
1. 4 miesięczny kurs Asemblera,
2. 4 miesięczny kurs C
3. 4 miesięczny kurs C++
Sprytni adepci programowania mogą pójść krok dalej i np. w ciągu miesiąca zapoznawać
się z językiem, a w ciągu kolejnych 3 miesięcy pisać programiki jakie wynikają z ich
"strategicznych zainteresować" np. grafiki, dźwięku, baz danych czy algorytmów.
Taki kurs realizowany nawet samodzielnie pozwala w ciągu roku zostać "prawie
programistą". Do pełni szczęścia brakowało by nam wiedzy ze wszystkich wymienionych
dziedzin (grafiki, dźwięku, baz danych czy algortymów) oraz wiedzy matematycznej oraz
wiedzy o projektowaniu systemów informatycznych, oraz wiedzy o narzędziach typu
tworzenie pluginów, aplikacji sieciowych i używanie profilerów.
[odnośnie Wszechstronność i C-style]
"Oprogramowanie interfejsu użytkownika w C++ to mordęga - na pewno w porównaniu z
rozwiązaniami dostępnymi w C# albo Delphi."
W sumie nie wiem skąd ta opinia - tak się składa, że biblioteka Delphi jest
udostępniana w pakiecie C++ Builder również dla C++. Poza tym autor artykułu
najwyraźniej nic nie słyszał o Qt (którym posługuje się ok. milion programistów!!!).
"Aplikacji webowych w C++ współcześnie się raczej nie pisze (a przynajmniej nie
słyszałem o żadnym takim przypadku),"
KAŻDY projekt o którym słyszał Kowalski ma w sobie C++:
http://www.lextrait.com/Vincent/implementations.html
" mobilne wprawdzie się da, ale wszyscy producenci dosyć zdecydowanie sugerują, by
raczej trzymać się języków, które zostały na daną platformę specjalnie przygotowane
(Java/C#/Swift lub Objective-C)."
Taaa... tylko że żaden z tych języków (może poza Swift - nie wiem co to i nie
wnikam) nie został przygotowany specjalnie na daną platformę...Prawda jest
prozaiczna: każdy chce wciągnąć w swoje własne bagno z którego trudno będzie się
wydostać... Nawet w tym swoim Delphi możesz pisać bez krępy na telefony... Nie mówiąc
już o C++...
"W mojej ocenie nauczenie kogoś języka C-style niesie ze sobą bardzo dużo korzyści."
Coś w tym jest. Jednak ja gdy zaistniała konieczność "zarzeźbienia" w Java to miałem
sporo problemów - język miliardów klas w którym średnia funkcja ma 3 linie do mnie
nie przemawia...
-
2. Data: 2018-12-25 12:13:04
Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
Od: fir <p...@g...com>
W dniu niedziela, 23 grudnia 2018 20:29:36 UTC+1 użytkownik s...@g...com
napisał:
> Witam
> Ostatnio sobie przeczytałem artykuł z magazynu Programista pt. "Jaki język polecić
początkującemu?". A teraz pragnę go skomentować. Oto skrótowe przedstawienie
artykułu:
>
> [Początki]
> Co oczywiste każdy jakoś zaczynał. Autor artykułu zaczynał od Basic-a na Atari.
Następnie odkrył Pascal-a i Delphi by następnie zgłębiać C#. Ta ścieżka wynikała z
rosnących potrzeb rzekomo nie możliwych do realizacji w poprzednich technologiach.
>
> [Prostota]
> W nauce łatwo przyswajane są proste koncepcje i one powinny być "pierwszym rzutem".
>
> [Oczekiwania]
> Szybkie efekty są pożądane w przypadku nauki programowania.
>
> [Wszechstronność i C-style]
> "Oprogramowanie interfejsu użytkownika w C++ to mordęga - na pewno w porównaniu z
rozwiązaniami dostępnymi w C# albo Delphi." "Aplikacji webowych w C++ współcześnie
się raczej nie pisze (a przynajmniej nie słyszałem o żadnym takim przypadku), mobilne
wprawdzie się da, ale wszyscy producenci dosyć zdecydowanie sugerują, by raczej
trzymać się języków, które zostały na daną platformę specjalnie przygotowane
(Java/C#/Swift lub Objective-C)."
> "W mojej ocenie nauczenie kogoś języka C-style niesie ze sobą bardzo dużo
korzyści."
>
>
> Teraz mój komentarz:
>
> [odnośnie Początki]
> Jak się okazuje ważne w życiu jest zaczęcie marszu od wybicia się z właściwej nogi.
W moim przypadku był to Asember x86. Dlaczego? Wydawało mi się, że da on dobre
pojęcie o tym jak właściwie działa komputer. Zależało mi na tym by dobrze go
zrozumieć gdyż dysponowałem jedynie znajomością systemu dwójkowego. Drugim krokiem
mojej nauki była nauka C++. Wynikało to z tego, że C to język systemów operacyjnych
(obok Asemblera) i jest on naturalnym (wstępnym) stadium nauki C++. C++ w owym czasie
był językiem aplikacji (Java była za wolna na tamtych komputerach i dziś w wielu
miejscach nadal tak jest, C# wtedy nie istniał).
>
> [odnośnie Prostota]
> Prostota tak, ale przede wszystkim ZROZUMIENIE. Można nauczyć kogoś wywoływania
różnych funkcji w JavaScript ale raczej nie przybliży mu to jak działa procesor, ani
co tak na prawdę jest niepodzielnym rozkazem dla programisty. W sumie jak mamy kogoś
uczyć wywołań różnych funkcji to czemu nie w Bash-u albo w Python-ie? Zakres
użyteczności dużo większy niż JavaScript-u.
>
> [odnośnie Oczekiwania]
> W nauce trzeba zawrzeć rodzaj kontraktu: uczymy się 3 miesiące i będziemy umieć to
i to. Albo: uczymy się rok i będziemy umieć TO i TO i TO.
> W ciągu 3 miesięcy faktycznie może nie być czasu na nic więcej niż parę tagów w
Html plus wywołania kilku funkcji w JavaScript plus wyświetlanie jakiejś grafiki plus
jakieś dźwięki.
> Jednak może to być jedynie zachęta do poważnej nauki.
> Moim zdaniem kurs minimum to rok podzielony na 3 etapy dotyczące WIEDZY
ELEMENTARNEJ w pracy przyszłego programisty:
> 1. 4 miesięczny kurs Asemblera,
> 2. 4 miesięczny kurs C
> 3. 4 miesięczny kurs C++
> Sprytni adepci programowania mogą pójść krok dalej i np. w ciągu miesiąca
zapoznawać się z językiem, a w ciągu kolejnych 3 miesięcy pisać programiki jakie
wynikają z ich "strategicznych zainteresować" np. grafiki, dźwięku, baz danych czy
algorytmów.
> Taki kurs realizowany nawet samodzielnie pozwala w ciągu roku zostać "prawie
programistą". Do pełni szczęścia brakowało by nam wiedzy ze wszystkich wymienionych
dziedzin (grafiki, dźwięku, baz danych czy algortymów) oraz wiedzy matematycznej oraz
wiedzy o projektowaniu systemów informatycznych, oraz wiedzy o narzędziach typu
tworzenie pluginów, aplikacji sieciowych i używanie profilerów.
>
> [odnośnie Wszechstronność i C-style]
> "Oprogramowanie interfejsu użytkownika w C++ to mordęga - na pewno w porównaniu z
rozwiązaniami dostępnymi w C# albo Delphi."
>
> W sumie nie wiem skąd ta opinia - tak się składa, że biblioteka Delphi jest
udostępniana w pakiecie C++ Builder również dla C++. Poza tym autor artykułu
najwyraźniej nic nie słyszał o Qt (którym posługuje się ok. milion programistów!!!).
>
> "Aplikacji webowych w C++ współcześnie się raczej nie pisze (a przynajmniej nie
słyszałem o żadnym takim przypadku),"
>
> KAŻDY projekt o którym słyszał Kowalski ma w sobie C++:
> http://www.lextrait.com/Vincent/implementations.html
>
> " mobilne wprawdzie się da, ale wszyscy producenci dosyć zdecydowanie sugerują, by
raczej trzymać się języków, które zostały na daną platformę specjalnie przygotowane
(Java/C#/Swift lub Objective-C)."
>
> Taaa... tylko że żaden z tych języków (może poza Swift - nie wiem co to i nie
wnikam) nie został przygotowany specjalnie na daną platformę...Prawda jest
prozaiczna: każdy chce wciągnąć w swoje własne bagno z którego trudno będzie się
wydostać... Nawet w tym swoim Delphi możesz pisać bez krępy na telefony... Nie mówiąc
już o C++...
>
> "W mojej ocenie nauczenie kogoś języka C-style niesie ze sobą bardzo dużo
korzyści."
>
> Coś w tym jest. Jednak ja gdy zaistniała konieczność "zarzeźbienia" w Java to
miałem sporo problemów - język miliardów klas w którym średnia funkcja ma 3 linie do
mnie nie przemawia...
ja bym polecal jakisprosty i logiczny jezyk nie wymagajacy setupu
1) c na jakiejsc dobrej libce bylby dobry gdyby nie to ze dookola c i kompilatora
zawsze moze sie pojawic tysiac problemow
z ktorymi ten newb musi dylowac, ogrom ilosci tych malych problemow (ktore ida w
tysiace) jest swoiscie 'przerazajacy'
2) javascrypt bylby chyba dobry gdyby nie to ze ten htmlowy setup jawaskryptu i
roznych tam jego elementow jest tes dosyc brzydki (i tez potencjalnie zahacza o
szerokie spektrom roznych 'ciakwaostek')
slowem ani to ani to nie jest chyba najlepsze niststy..tak naprawde ktos kto chcialby
uczyc kogos pisania kodowani powinien napisac specjalny program jezyk ze specjalnym
edytorem z wbudowana biblioteka specjalnie pod tych ktorzy chca sie uczyc
programowania.. trzeba cos takiego zrobic i tyle, jak sie komus chce niech robi
-
3. Data: 2018-12-26 01:27:30
Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
Od: g...@g...com
W dniu wtorek, 25 grudnia 2018 12:13:05 UTC+1 użytkownik fir napisał:
> slowem ani to ani to nie jest chyba najlepsze niststy..tak naprawde ktos kto
chcialby uczyc kogos pisania kodowani powinien napisac specjalny program jezyk ze
specjalnym edytorem z wbudowana biblioteka specjalnie pod tych ktorzy chca sie uczyc
programowania.. trzeba cos takiego zrobic i tyle, jak sie komus chce niech robi
Ogólnie sporo takich rzeczy już jest.
Jest środowisko "dr Racket" https://racket-lang.org/
oraz książki "How to design programs" https://www.htdp.org/
i "How to design worlds" https://world.cs.brown.edu/
oraz (niestety płatne) "Realm of Racket" http://www.realmofracket.com/
Są dystrybuje języka Smalltalk - Pharo oraz Squeak, a w tym
ostatnim jest pakiet narzędzi "etoys" http://www.squeakland.org/
można na youtubie znaleźć dużo tutoriali do tego (w tym nawet
prezentacje Alana Kaya)
Z rzeczy może mniej przemyślanych, są środowiska takie jak MIT Scratch
albo Balti.
-
4. Data: 2018-12-26 04:07:39
Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
Od: fir <p...@g...com>
W dniu środa, 26 grudnia 2018 01:27:31 UTC+1 użytkownik g...@g...com napisał:
> W dniu wtorek, 25 grudnia 2018 12:13:05 UTC+1 użytkownik fir napisał:
>
> > slowem ani to ani to nie jest chyba najlepsze niststy..tak naprawde ktos kto
chcialby uczyc kogos pisania kodowani powinien napisac specjalny program jezyk ze
specjalnym edytorem z wbudowana biblioteka specjalnie pod tych ktorzy chca sie uczyc
programowania.. trzeba cos takiego zrobic i tyle, jak sie komus chce niech robi
>
> Ogólnie sporo takich rzeczy już jest.
> Jest środowisko "dr Racket" https://racket-lang.org/
> oraz książki "How to design programs" https://www.htdp.org/
> i "How to design worlds" https://world.cs.brown.edu/
> oraz (niestety płatne) "Realm of Racket" http://www.realmofracket.com/
>
> Są dystrybuje języka Smalltalk - Pharo oraz Squeak, a w tym
> ostatnim jest pakiet narzędzi "etoys" http://www.squeakland.org/
>
> można na youtubie znaleźć dużo tutoriali do tego (w tym nawet
> prezentacje Alana Kaya)
>
> Z rzeczy może mniej przemyślanych, są środowiska takie jak MIT Scratch
> albo Balti.
moim zdaniem to powinno przypominac cos w rodzaju basica ew z elementami logo cos w
tym stylu
mozna by sie anwet zastanowic jak w takim jezyku wygladac powinna prosta gra np tyou
river raid...moze jutro naszkicuje
-
5. Data: 2018-12-26 13:35:39
Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
Od: s...@g...com
A co ze zrozumieniem działania komputera?!? Że tak nieśmiało się spytam... Asembler
do niczego?!?
-
6. Data: 2018-12-26 18:10:08
Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
Od: fir <p...@g...com>
W dniu środa, 26 grudnia 2018 13:35:41 UTC+1 użytkownik s...@g...com napisał:
> A co ze zrozumieniem działania komputera?!? Że tak nieśmiało się spytam... Asembler
do niczego?!?
sembler jest super ale x86 to syf.. w asmie liczy sie elegancja i prostota ktora
pozwala z tego budowac dowalnie skomplikowane programy przy zachowaniu minimum
roziaru i maksimum szybkosci - a x86 ma to gdzies
jak komus sie chce to moglby napisac jak widzi kod prostego river raida w takim
superprostym lego-basicu, muglbym to napisac bo to nawet dobry topic tyle ze mi si
enie chce, jestem ostatnio patologicznie leniwy jesli chodzi o kodowanie
-
7. Data: 2018-12-26 20:42:29
Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
Od: g...@g...com
W dniu środa, 26 grudnia 2018 13:35:41 UTC+1 użytkownik s...@g...com napisał:
> A co ze zrozumieniem działania komputera?!? Że tak nieśmiało się spytam... Asembler
do niczego?!?
Ciekawostka: jest taka książka "filozoficzna" Daniela C. Dennetta pt.
"Dźwignie wyobraźni i inne narzędzia do myślenia", której jeden z rozdziałów
jest przedstawiony pojęciu obliczalności, i w nim przedstawiony jest
model obliczeń zwany "maszyną RAM".
Jest bardzo podobny do maszyn von Neumannowskich, tyle że pamięć
nie jest adresowalna. Tak też się składa, że jak przez rok studiowałem
filozofię na UW, to dostałem jako zadanie na zajęcia z teorii obliczeń prowadzone
przez śp. prof. Marcina Mostowskiego zreferowanie zagadnienia
predykatu T Kleenego, w którym używa się jako podstawy modelu maszyny
RAM, i jeśli by to kogoś interesowało, tekst (po polsku) jest dostępny
tutaj:
https://github.com/panicz/writings/blob/master/archi
ve/predykat-kleenego.pdf
Ja sam w swojej pracy magisterskiej użyłem maszyny wirtualnej, której
zestaw instrukcji był zasadniczo podobny do języka BASIC. Z tego co się
orientuję, w wielu artykułach akademickich stosuje się również bardzo
podobny język o nazwie FCL (Flow Chart Language).
Na seminarium były też omówione inne modele, w tym oczywiście maszyna
Turinga, funkcje rekurencyjne oraz modalny ?-rachunek. (o dziwo
nie było ?-rachunku).
Osobiście nie mam dużego zaufania do rzeczy, które polecają
programiści, a to z tego względu, że zazwyczaj mają oni bardzo
wąską perspektywę na to, czym jest programowanie, i z reguły
polecają taką drogę rozwoju, która powiela popełnione przez nich błędy
(których często sami sobie nawet nie uświadamiają).
W każdym razie jeżeli idzie o "zrozumienie działania komputera",
to oczywiście nieodzownym pytaniem jest: "jakiego komputera?".
Na przykład Simon Peyton Jones zaproponował model obliczeń oparty
na redukcji grafów, zaś Gyula Magó wymyślił swoją maszynę do redukcji
stringów, inspirowany językiem FFP Johna Backusa, opisanym w jego
wykładzie wygłoszonym z okazji otrzymania nagrody Turinga ("Can
programming be liberated from von Neumann style?").
Współczesne karty graficzne (GPGPU) programuje się w oparciu
o model zwany "maszyną pRAM".
Edsger Dijkstra twierdził, że "jest w zasadzie niemożliwym, żeby
nauczyć dobrego programowania studentów, którzy mieli wcześniej
styczność z BASICem: jako potencjalni programiści są psychicznie
okaleczeni bez nadziei na regenerację".
Co prawda moja główna myśl, kiedy czytam takie słowa, to
"kim ten facet sobie myśli że jest?", ale zgodzę się, że
ja sam musiałem oduczać się różnych złych nawyków, których
nabrałem, ucząc się programowania poprzez takie języki
jak C czy C++ (szczególnie cenna była dla mnie książka
"Struktura i Interpretacja Programów Komputerowych", choć
przyznam, że nie od razu zdołałem docenić jej wartość)
-
8. Data: 2018-12-26 21:40:30
Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
Od: s...@g...com
> W każdym razie jeżeli idzie o "zrozumienie działania komputera",
> to oczywiście nieodzownym pytaniem jest: "jakiego komputera?".
Tego na którym się uczysz lub tego który Cię interesuje (Amd64, MC68000, PowerPc - z
tych popularniejszych)...
-
9. Data: 2018-12-26 21:53:30
Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
Od: g...@g...com
W dniu środa, 26 grudnia 2018 21:40:31 UTC+1 użytkownik s...@g...com napisał:
> > W każdym razie jeżeli idzie o "zrozumienie działania komputera",
> > to oczywiście nieodzownym pytaniem jest: "jakiego komputera?".
>
> Tego na którym się uczysz lub tego który Cię interesuje (Amd64, MC68000, PowerPc -
z tych popularniejszych)...
Podoba mi się stwierdzenie ze Struktury i Interpretacji Programów
Komputerowych: informatyka jest nauką o komputerach w tym samym
stopniu, co biologia jest nauką o mikroskopach, albo astronomia
- o teleskopach. Komputery nie są przesadnie interesujące.
Nawet z perspektywy programisty: kiedy piszę program, to nie interesuje
mnie, czy to będzie działało na ARMach, Intelach czy gdzie.
Pierwotnie język C powstał dla komputerów PDP-7 i PDP-11,
ale jego wartość polegała właśnie na tym, że abstrahował
od nieistotnych szczegółów.
-
10. Data: 2018-12-26 22:35:11
Temat: Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
Od: g...@g...com
W dniu środa, 26 grudnia 2018 21:53:31 UTC+1 użytkownik g...@g...com napisał:
> W dniu środa, 26 grudnia 2018 21:40:31 UTC+1 użytkownik s...@g...com napisał:
> > > W każdym razie jeżeli idzie o "zrozumienie działania komputera",
> > > to oczywiście nieodzownym pytaniem jest: "jakiego komputera?".
> >
> > Tego na którym się uczysz lub tego który Cię interesuje (Amd64, MC68000, PowerPc
- z tych popularniejszych)...
>
> Podoba mi się stwierdzenie ze Struktury i Interpretacji Programów
> Komputerowych: informatyka jest nauką o komputerach w tym samym
> stopniu, co biologia jest nauką o mikroskopach, albo astronomia
> - o teleskopach. Komputery nie są przesadnie interesujące.
>
> Nawet z perspektywy programisty: kiedy piszę program, to nie interesuje
> mnie, czy to będzie działało na ARMach, Intelach czy gdzie.
> Pierwotnie język C powstał dla komputerów PDP-7 i PDP-11,
> ale jego wartość polegała właśnie na tym, że abstrahował
> od nieistotnych szczegółów.
Przy okazji polecam lekturę książek Fabiena Sanglarda
z serii "Game Engine Black Book", gdzie omówione są
kody źródłowe engine'ów Wolfensteina 3d i Dooma.
Między innymi wyjaśnione tam jest to, jak okrutne było
używanie wskaźników w języku C w systemie MS DOS dzięki
20-bitowej szynie danych 16-bitowych procesorów 8086.
Chociaż kiedyś też się tego uczyłem, ciesze się, że
urodziłem się na tyle późno, że ominęło mnie programowanie
tych cacuszek.