Temat: Wszyscysmy z BASIC'a...
Ciekawy wpis na blogu:
http://www.devblogi.pl/2009/10/wszystko … m-sie.html
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
Czwarta edycja ATASCII Compo! Dziś, 1 października 2024, oficjalnie rozpoczął się okres nadsyłania prac!
Silly Venture 2024 SE - stuff Dostępny jest już stuff z zeszłomiesięcznego party Silly Venture 2024
FujiCup FujiCup ma na celu wspieranie sceny gier retro, dając uczestnikom szansę na pokazanie swojego talentu
Echa Silly Venture 2024 SE Są już dostępne wyniki Silly Venture 2024 SE
Uaktualnienie firmware do The400 Poprawki do "fizycznego" emulatora ośmiobitowych komputerów i konsol Atari.
Zaloguj się lub zarejestruj by napisać odpowiedź
Ciekawy wpis na blogu:
http://www.devblogi.pl/2009/10/wszystko … m-sie.html
przed bilem gejem to byl malo popularny jezyk, dopiero on ze swoja sila marketingu go rozpropagowal (must have na 8bit skladakach z z80)
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... ;)
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...
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.
niedzielnych programistów jakimi byliśmy zaczynając zabawę w programowanie.
Ja zacząłem we wtorek. ;)
BPNMSP :)
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 :)
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.
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
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.
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.
Ostatnio edytowany przez mono (2010-08-05 09:37:48)
az mi sie rymowanka zrobila: 'jeszcze sie taki nie urodzil, co by dobrego jezyka nie sp.....il'.
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.
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?
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 :)
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 :)
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" :)
Ostatnio edytowany przez jer (2010-08-05 13:34:48)
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.
Ostatnio edytowany przez jellonek (2010-08-05 13:41:19)
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.
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.
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 ;)
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ą.
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. :)
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.
@adam: w asmie też można uzyskać coś na ekranie jedną linijką, np. w ST parę bombek :)
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.
Dżizus. Odebrało mi mowę ;) Piękne seminarium lingwistyczne :)
Zaloguj się lub zarejestruj by napisać odpowiedź
[ Wygenerowano w 0.096 sekund, wykonano 10 zapytań ]