1

Ciekawy wpis na blogu:
http://www.devblogi.pl/2009/10/wszystko … m-sie.html

2

przed bilem gejem to byl malo popularny jezyk, dopiero on ze swoja sila marketingu go rozpropagowal (must have na 8bit skladakach z z80)

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

3

W tamtych czasach to faktycznie był dobry język dla początkujących. Ze strukturalnych języków (mówimy o latach 70.) do wyboru był mainframe'owy Fortran, a z funkcyjnych LISP i LOGO (które zresztą też było wykorzystywane w celach edukacyjnych, bo ktoś się zasugerował żółwiem). Gdyby Python powstał paręnaście lat wcześniej, być może dzisiaj świat wyglądałby inaczej... ;)

800 XE + CA 2001; Portfolio; 1040 STfm; Lynx II
Psion Organiser II XP, LZ64; Series 3a, 3c, 5mx; Siena; Workabout; HP 95LX, 200LX, 620LX; Amiga 1200; Amstrad NC100, NC200; Game Boy Color
http://palmtop.cosi.com.pl -- nie tylko o Atari Portfolio

4

troche pozniej powstal tez forth - ktory znakomicie sie nadaje do nauki programowania (choc wymaga innego programistycznego myslenia).

wiekszym zlem byl pascal, ktory jeszcze wieksze dziory w glowie robil...

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

5

A jakie dziury robił w głowie Pascal? Ogólnie popularność BASIC'a wynika z tego że włączałeś kompa i od razu byłeś w środowisku w którym mogłeś edytować program, testować, uruchamiać, bez większej zwłoki. Do tego prostota. Ostatnio tak sobie z podłączyłem Atari. Od tak napisałem sobie prostego Arkanoida. Teraz jak piszesz program, to pokaż mi gdzie tak łatwo z marszu można to zrobić, nie operując koncepcjami typu klasy, metody, dziedziczenie, struktury danych. To są dobre koncepcje, ale nie dla takiego niedzielnych programistów jakimi byliśmy zaczynając zabawę w programowanie.

6

mormon napisał/a:

niedzielnych programistów jakimi byliśmy zaczynając zabawę w programowanie.

Ja zacząłem we wtorek. ;)

BPNMSP :)

KMK
? HEX$(6670358)

Pascal nie jest złym językiem, tylko dość mocno ograniczonym - w porównaniu do języków opartych o nawiasy klamrowe. Do tego obiektowość została do niego dodana nieco na siłę.

Zaś draco030 już w łonie matki kodował w asm6502 a asm m68k wyssał z mlekiem ;) BPNMSP :)

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

8

O, flame nt. języków programowania. :)

Moje zdanie: dobry programista napisze dobry program w każdym języku, słaby programista nie napisze dobrego programu w żadnym języku.

https://www.youtube.com/watch?v=jofNR_WkoCE

9

Adam Klobukowski napisał/a:

Zaś draco030 już w łonie matki kodował w asm6502 a asm m68k wyssał z mlekiem

Nie w łonie matki, tylko we wtorki było kółko komputerowe w mojej szkole :P

KMK
? HEX$(6670358)

10

Fox napisał/a:

dobry programista napisze dobry program w każdym języku, słaby programista nie napisze dobrego programu w żadnym języku.

Jasne, co do tego nie ma wątpliwości. Tylko najpierw trzeba się STAĆ tym dobrym programistą :) Większości z nas pewnie byłoby obojętne, w czym zaczynamy - czy byłby to Forth (też bym chciał zaczynać od tego języka) czy LISP. Rzecz w tym, że oprócz takich fanatyków ;) jest też cała masa zwykłych ludzi, którzy w tych sprawach są laikami, a chcą używać języka programowania np. w swojej pracy zawodowej.

800 XE + CA 2001; Portfolio; 1040 STfm; Lynx II
Psion Organiser II XP, LZ64; Series 3a, 3c, 5mx; Siena; Workabout; HP 95LX, 200LX, 620LX; Amiga 1200; Amstrad NC100, NC200; Game Boy Color
http://palmtop.cosi.com.pl -- nie tylko o Atari Portfolio

11 Ostatnio edytowany przez mono (2010-08-05 09:37:48)

A czy użycie konkretnego języka programowania (i nauczenie się zasad rozwiązywania problemów w nim) w takim razie nie zależy od specyfiki pracy zawodowej?

Edit: Szkoda się uczyć "uniwersalnego" (hehe) C++ skoro i tak w pracy zawodowej będziesz używał jakiegoś języka deklaratywnego.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

12

az mi sie rymowanka zrobila: 'jeszcze sie taki nie urodzil, co by dobrego jezyka nie sp.....il'.

13

mono napisał/a:

A czy użycie konkretnego języka programowania (i nauczenie się zasad rozwiązywania problemów w nim) w takim razie nie zależy od specyfiki pracy zawodowej?

Oczywiście. Inaczej będzie się rozwiązywało problemy w Matlabie, inaczej w Javie, a jeszcze inaczej w VBA. Chodziło mi o "liźnięcie" samego programowania, zrozumienie idei pętli, procedury, klasy itd. Dlatego LOGO było bardzo złym językiem "dla przedszkolaków", bo uczyło programowania funkcyjnego, w dodatku w notacji prefiksowej (czy jak to się po polsku zwie). Najlepszy - moim zdaniem - język dla zupełnych nowicjuszy to taki, który pozwoli zrozumieć ideę pisania programów bez narzucania jakiegoś nietypowego sposobu myślenia.

800 XE + CA 2001; Portfolio; 1040 STfm; Lynx II
Psion Organiser II XP, LZ64; Series 3a, 3c, 5mx; Siena; Workabout; HP 95LX, 200LX, 620LX; Amiga 1200; Amstrad NC100, NC200; Game Boy Color
http://palmtop.cosi.com.pl -- nie tylko o Atari Portfolio

14

A ja miałem na kółku komputerowym w podstawówce właśnie Logo i myślę, że ono uczy porządkowania i precyzyjnego definiowania pojęć (jest zresztą polecany w dydaktyce) :). Braki w tym względzie wyłażą potem choćby u wielu programistów PHP - warto zobaczyć jaki śmieć potrafią wygenerować niektóre osoby przy tzw. "szybkim" tworzeniu www. W C++ z kolei nie pomaga też bagaż konstrukcji z C (podobnie w Javie, choć w mniejszym stopniu).
Co to jest Twoim zdaniem "typowy sposób myślenia"? Najpopularniejszy?

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

Dla mnie uczenie się programowania, to nie uczenie się konkretnego języka, lecz konkretnego sposobu myślenia. Typowe języki mają podobny zestaw funkcjonalności i odpowiednie biblioteki standardowe, reszta to już tylko dotarcie się ze składnią (przy intensywnym używaniu, do zrobienia w tydzień lub nawet szybciej), i zaznajomienie się z biblioteką standardową.

Nauczenie się innego paradygmatu programowania, np. funkcyjnego, (LISP, PROLOG) też nie jest aż takie trudne - mnie się już po kilku godzinach zajęć na uczelni mózg 'wywrócił na drugą stronę' i miałem z górki. Z czasem umiejętność zanikła (z powodu nieużywania) ale myślę że jak będzie potrzebna to wróci :)

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

16

Ja tez uwazam ze twierdzenie ze jakis jezyk poznany w dziecinstwie "psuje" przyszlego programiste to gruba przesada.
Nawet jesli daje jakies zle nawyki to bledna one przy zyskach jakie plyna z nauki programowania w czymkolwiek.

Ja zaczynalem od Basica, i np bardzo dlugo nie moglem zczaic o co kaman z tymi obiektami ;) Bylem przekonany ze to jakas dziwna moda, bo procedury i funkcje sa w zupelnosci wystarczajace :P No ale w koncu, zalapalem.
O slynnym "goto", ktore jakoby robi przyszlym programistom wate z mozgu to juz nawet nie wspominam :P

Natomiast na uczelni na algebrze, z kompletnym oslupieniem widzialem ludzi, ktorzy nie mogli zalapac idei tablic wielowymiarowych albo wskaznikow czy logiki Boola! Cos co dla mnie bylo zupelnie naturalne do zrozumienia, po zabawie na Atari, choc wczesniej nie wiedzialem nawet jak sie niektore z tych rzeczy fachowo nazywaja :)

Ale najwiekszym zyskiem sa pewne nawyki w mysleniu: np. przewidywanie wszystkich mozliwych zachowac programu i uzytkownika, odpowiednia precyzja... Takie tam :)

17 Ostatnio edytowany przez jer (2010-08-05 13:34:48)

Mój pierwszy (wspólnie z kolegami zresztą pisany) program był w Algolu 65. Komendy po polsku (oblicz, pisz), # nazwaliśmy "płotek" itp. Program klepało się na dalekopisie z dziurkarką taśm. To były czasy... Komputer lampowy jeszcze o dźwięcznej nazwie Ural psuł się co chwila.
A jednak nie "wszyscyśmy z Basic'a" :)

18 Ostatnio edytowany przez jellonek (2010-08-05 13:41:19)

AdamK napisał/a:

Dla mnie uczenie się programowania, to nie uczenie się konkretnego języka, lecz konkretnego sposobu myślenia.

w takim wypadku nalezalo by mowic o uczeniu sie programowania w roznych stylach.
przejsc z jezykow strukturalnych (c/pascal) do objektowych (tj. tak aby ich sile wykorzystac) jest trudno - ze wzgledu na nawyki. podobnie jest z przechodzeniem na jezyki lispowe, na jezyki typu scala, czy erlang (dla mnie nadal kosmos - ciagle mnie odrzuca ;) ).

sie mi przypomnialy artykuly Charlsa Moora w ktorych pisal ze nauka programowania w forcie to tak na prawde porzucenie dotychczasowego stylu myslenia ;)

edited: jer - http://www.dereatari.republika.pl/omnie.htm tam jest algol 60 :P
a to nie byl jakis odpowiednik algola (na nim wzorowany) ale robiony przez zespol karpinskiego?
jakos tak mi sie to kojarzy ze w tamtych latach w polsce byl "wlasny jezyk wzorowany na algolu" ale nim nie bedacy.

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

19

mono napisał/a:

Co to jest Twoim zdaniem "typowy sposób myślenia"? Najpopularniejszy?

Tak :) Wychodzę z takiego założenia: jeżeli ktoś ma żyłkę programisty, to obojętne, od jakiego języka zacznie. Jeżeli będzie musiał wykorzystać jakiś "egzotyczny" język, np. Prolog, w pracy naukowej - da radę; pracownicy naukowi nie takie rzeczy muszą opanowywać. Natomiast jeżeli będzie chciał napisać programik liczący mu arkusz Excela, skrypt do automatyzacji jakichś zadań albo program do obliczeń inżynierskich, to nie użyje do tego Fortha ani Scheme, tylko coś "typowego".
Tak to widzę. Kiedyś prowadziłem zajęcia ze studentami medycyny, którzy jako "dokładkę" do biofizyki mieli informatykę (!). Wymyśliłem, że pokażę im VBA - i praktycznie wszyscy dawali radę z prostymi programikami, nawet im się to podobało, te okienka, przyciski itp. Gdybym ich próbował uczyć Rubiego, to pewnie by odpuścili.

Adam Klobukowski napisał/a:

Nauczenie się innego paradygmatu programowania, np. funkcyjnego, (LISP, PROLOG) też nie jest aż takie trudne - mnie się już po kilku godzinach zajęć na uczelni mózg 'wywrócił na drugą stronę' i miałem z górki.

Właśnie o tym mówiłem :) Jeżeli zrozumie się, o co chodzi z funkcjami, zmiennymi i operacjami logicznymi, to można przenieść się na dowolny inny język. Jeżeli zacznie się od assemblera (konieczność opanowania filozofii działania sprzętu) albo Fortha (odwrotna notacja polska, stos itp.), to można nie przebrnąć przez same początki.

jer napisał/a:

Mój pierwszy (wspólnie z kolegami zresztą pisany) program był w Algolu 65.

Pierwszym językiem, który poznałem po BASIC-u, był Clipper. Byłem wtedy w podstawówce i próbowałem na szkolnym XT-ku pisać w tym rzeczy, do których Clipper zdecydowanie się nie nadaje. Dopiero nauczyciel mnie naprostował, pokazując Turbo Pascala, kiedy zobaczył, że próbuję w Clipperze spłodzić program do instalacji polskich liter :D
Może to nie to samo co Algol, ale też ciekawe narzędzie dla początkujących ;)

jellonek napisał/a:

a to nie byl jakis odpowiednik algola (na nim wzorowany) ale robiony przez zespol karpinskiego?
jakos tak mi sie to kojarzy ze w tamtych latach w polsce byl "wlasny jezyk wzorowany na algolu" ale nim nie bedacy.

Z tego co kojarzę, to była implementacja Algola-68. Gdzieś w Wikipedii o tym piszą.

800 XE + CA 2001; Portfolio; 1040 STfm; Lynx II
Psion Organiser II XP, LZ64; Series 3a, 3c, 5mx; Siena; Workabout; HP 95LX, 200LX, 620LX; Amiga 1200; Amstrad NC100, NC200; Game Boy Color
http://palmtop.cosi.com.pl -- nie tylko o Atari Portfolio

20

nosty napisał/a:

bardzo dlugo nie moglem zczaic o co kaman z tymi obiektami ;) Bylem przekonany ze to jakas dziwna moda, bo procedury i funkcje sa w zupelnosci wystarczajace :P No ale w koncu, zalapalem.

To proszę wytłumacz mi, bo ja ciągle myślę, że to dziwna moda. :)

https://www.youtube.com/watch?v=jofNR_WkoCE

Programista powinien też być elastyczny, i oprócz swego 'głównego' narzędzia pracy, znać, przynajmniej po łebkach inne języki. Wtedy wie co ewentualnie traci i co może zyskać. No i z powodu postępu technologicznego, jest to zawód w którym naprawdę trzeba się uczyć całe życie.

Dla kogoś kto nie zajmuje się tematem zawodowo, ani mocno hobbistycznie, ważne jest stosunek nakładów do wyników. W typowym basicu, na ekranie można coś uzyskać jedną linijką, więc bardzo szybko mamy wyniki. C wymaga sporo więcej wysiłku, a asm to już zupełnie inny świat.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

22

@adam: w asmie też można uzyskać coś na ekranie jedną linijką, np. w ST parę bombek :)

KMK
? HEX$(6670358)

23

obecnie najwazniejszym jezykiem i tak jest sql :p

http://atari.pl/hsc/ad.php?i=1.

24

No to i ja dorzucę swoje trzy grosze.

Programy pisze się dla ludzi. Maszynie jest wszystko jedno. To człowiek musi rozumieć program, aby móc go zmienić, gdy przestanie spełniać oczekiwania.

BASIC jakiego znamy z 8-bitowców jest językiem niestrukturalnym. Jest idealny do pierwszych kroków, ale nie wymusza, ani nawet  nie wspomaga struktury, przez co rozumienie programu jest bardzo trudne i modyfikowanie kosztowne. Nie mamy ani klarownego przypływu sterowania ani porządku w danych.

Języki strukturalne wspomagają strukturę wymuszając jasny przepływ sterowania, ale niestety o dane dbają tak samo, jak BASIC o sterowanie, czyli wcale. Większość energii zespołu jest pochłaniana na ręczne zarządzanie zasobami, ostrożną komunikację pomiędzy modułami i szukanie błędów kto komu nadepnął na stopę, a kto o czym zapomniał.

Języki obiektowe zaś chronią dane i w poprawnym projekcie to kompilator powie ci, że czegoś ci nie wolno (bo dobierasz się do cudzego obiektu i nie za bardzo wiesz jak, bo kolega nie napisał dokumentacji) i to kompilator automatycznie zwolni zasób, gdy nie jest ci już potrzebny. To nie moda. To odciążenie.

Języki deklaratywne są najbardziej wyrafinowane, bo w nich określamy tylko co mamy osiągnąć, a już sama maszyna dba o to, aby nam to dostarczyć, dlatego są najczęściej destynowane do specyficznych zastosowań (jak SQL czy HTML).

Inne paradygmaty jak języki funkcyjne czy logiczne (Prolog nie jest funkcyjny) mają wąskie zastosowania w rozwiązywaniu nietuzinkowych problemów wyuzdanymi algorytmami. Zastosowań mają mało, ale w tym, co robią, są diabelnie dobre.

Gdybyśmy wszyscy byli supermenami, to nie musiałoby powstać nic wyższego niż asembler. Człowiek jednak jest ułomny, a programy nieuchronnie błędne i musimy sobie pomagać, jak tylko potrafimy automatyzując co tylko się da, tak, aby jak najbardziej skupiać się na istocie problemu, a nie na technikaliach jego implementacji.

25

Dżizus. Odebrało mi mowę ;) Piękne seminarium lingwistyczne :)

Gdyby we wszechświecie nie istniały obce cywilizacje to znaczy, że na ziemi istniałaby tylko biała rasa - M.M. Kucharski