Nauka programowania...

Mar 29, 2005 83 Replies

To po co robisz pusty :) to jest po to aby nie by³o puste i w razie wyj±tku zapisywa³o go np. w logu tak aby pó¼niej mo¿na by³o przeanalizowaæ b³êdy w aplikacji i usun±æ w niej bugi.

Nie nazwa³ bym obiektowo¶ci ba³aganem wrêcz przeciwnie, du¿ych aplikacji nie da siê nie pisaæ obiektowo bo inaczej wyjdzie z tego taki bajzel ¿e nikt nie bêdzie w stanie nad tym zapanowaæ. Dzieli siê je na jak najdrobniejsze kawa³ki nie tylko na obiekty ale tak¿e na pluginy i inne tego typu podzia³y i Java jest tu o wiele lepsza ni¿ C. Acz kolwiek co racja to racja ¿e Java ma upierdliw± obs³ugê wyj±tków (no ale po to te wyj±tki siê robi aby by³y obs³ugiwane). Java do takiech naprawê du¿ych aplikacji które nie maj± siê wieszaæ co parê minut i s± pisane w grupie 10 programistów siê nadaje napewno du¿o lepiej ni¿ C które nie jest obiektowe z za³o¿enia. Oczywi¶cie jak mówie C nie mam na my¶li C++ bo C++ jest ju¿ bardzo fajnym jêzykiem chocia¿ te¿ upierdliwym, a najlepszy teraz jest C# ale jego nie polecam bo ksi±¿ki do niego s± raczej przeznaczone dla bardziej zaawansowanych programistów. Acz kolwiek to jest teraz najbardziej wygodny jêzyk.

TO sie nazywa sztywna specyfikacja - trzeba jawnie napisac ze nic nie robisz :-)

J.

No to na mikrokontrolerki wielkiego wyboru mia³ nie bêdziesz, bo tam poza asemblerem i C zazwyczaj innych alternatyw nie ma. Mo¿e byæ jeszcze BASCOM -- nigdy nie u¿ywa³em, ale s³ysza³em wiele pochlebnych opinii z ust pocz±tkuj±cych.

Je¶li chcesz siê zacz±æ uczyæ programowania imperatywnego, to najlepszym (co nie znaczy, ¿e idealnym) z przychodz±cych mi do g³owy jêzyków programowania do tego celu bêdzie Java. Jest do¶æ podobna do C++, wiêc je¶li w przysz³o¶ci bêdziesz chcia³ siê przestawiæ na ten jêzyk, to bêdzie znacznie ³atwiej ni¿ z jêzyka algolopodobnego. Nie zrobisz sobie te¿ w niej krzywdy, co Ciê czeka na ka¿dym kroku eksperymentów z C(++).

Od C++ nie polecam zaczynaæ. To jeden z najgorszych jêzyków programowania, jakie istniej±. Jego ci±g³e stosowanie jest spowodowane nie jego zaletami, lecz bardzo szerokim wykorzystaniem go w przemy¶le, gdzie zast±pi³ jeszcze gorsze C, oraz istnieniem wielkiej liczby bibliotek i innego gotowego kodu. Aby by³o "¶mieszniej", do programowania niskopoziomowego bardzo s³abo siê nadaje; proszê np. o podanie przeno¶nej deklaracji tablicy 37-bitowych liczb ca³kowitych ze znakiem. Albo jeszcze pro¶ciej: znale¼æ taki typ, który bêdzie przechowywa³ liczby ca³kowite z podanego zakresu i zu¿ywa³ przy tym mo¿liwie ma³o pamiêci -- to, co siê w Adzie (i Pascalu oraz VHDLu) robi za pomoc± jednego symbolu, w C++ zajmuje jakie¶ 700 linii.

Kolejnym problemem jest to, ¿e jêzyk ten jest tak rozbudowany, ¿e prawdopodobnie nie istnieje na ¶wiecie osoba znaj±ca ca³y C++. Nawet po rocznym kursie akademickim bêdziesz zna³ mo¿e 20% rzeczy, które mo¿na w nim wyraziæ -- nowe ca³y czas siê odkrywa. Dla osób ¿yj±cych w przekonaniu, ¿e jest inaczej, mam zestaw problemów, które na pierwszy rzut oka wygl±daj± na niemo¿liwe, a s± jak najbardziej do zrealizowania.

Pierwszy z brzegu: napisaæ program, który wygeneruje N (gdzie N zadeklarowan± przez u¿ytkownika sta³±) kolejnych liczb pierwszych. Tylko nie na ekranie, ale w raporcie b³êdów kompilatora. :-)

Albo znacznie prostsze: napisaæ kilkunastolinijkowy program, który po skompilowniu da 1GiB kodu w pliku wynikowym.

Mam równie¿ tzw. praktyczne problemy, je¶li dla kogo¶ powy¿sze s± zbyt abstrakcyjne i nieprzydatne.

Niestety, w pewnym momencie na to C++ bêdziesz musia³ przej¶æ, wiêc warto go poznaæ, ale nie jako Twój pierwszy jêzyk programowania. O ile rynek oprogramowania zaczyna siê ju¿ powoli odklejaæ od C++, to narzêdzia stosowane w oprogramowaniu sprzêtu zawsze by³y o co najmniej kilka lat za reszt± peletonu, wiêc tu jego znajomo¶æ bêdzie jeszcze d³uuugo przydatna.

Innym przyk³adem mo¿e byæ VHDL, w którym _nie da siê_ zapisaæ konstrukcji, w kategoriach których my¶lê, bo siê tam programowanie generyczne sprowadza do przekazywania sta³ych -- nie ma specjalizacji, wiêzów itp. rzeczy. Na szczê¶cie ma ten jêzyk zostaæ rozszerzony o prze³omowe i nowatorskie rozwi±zania, które Ada mia³a ju¿ ponad 20 lat temu. :-)

Pozdrawiam Piotr Wyderski

Tylko pytanie, czy chce. Bo je¶li celem jest zrobienie dzia³aj±cego programu, a nie zag³êbianie siê w tajniki programowania, to Bascom mo¿e byæ ca³kiem niez³ym pomys³em.

Pozdrawiam Piotr Wyderski

...

widzę, że jesteś miłośnikiem Lady Lovelace ;-)

Fakt, ADA jest teoretycznie świetnym językiem programowania, tylko szkoda, że nie ma (przynajmniej ja nie znam) kompilatora tego języka, który byłby dostępny i bez zbyt dużej ilości błędów. Jak możemy sobie poteoretyzować, to Algol 68 jest jeszcze lepszy, bo wykrywa niektóre błędy semantyczne i częściowo poprawia oczywiste błędy składniowe. Ale też teoretycznie, bo w praktyce nie istniał kompilator tego języka implementujący wszystko.

Waldek

No nie da siê ukryæ. :-) Bardzo siê pocz±tkowo ucieszy³em, ¿e VHDL jest oparty na podzbiorze Ady. Niestety pó¼niej siê okaza³o, ¿e na bardzo sprymityzowanym i zwulgaryzowanym jej podzbiorze. :-(

Ale nie bêdê poleca³ Ady do nauki programowania, bo to trochê nie ten kaliber.

GNAT dzia³a zno¶nie.

"Here is a language so far ahead of its time, that it was not only an improvement on its predecessors, but also on nearly all its successors" :-)))

Moim zdaniem to nie jest zaleta, bo chcê byæ powiadomiony o _ka¿dym_ b³êdzie w moim kodzie.

Zgadza siê, ale DOK£ADNIE tak samo jest z C++. Po prostu jêzyk ten tak przyty³, ¿e mu krêgos³up pêk³.

Pozdrawiam Piotr Wyderski

muszę pooglądać. Choć kontakt z panią Lovelace miałem tylko peryferyjny na uczelnii oprócz jakiegoś zadania domowego nic w tym nie pisałem. A były to ćwiczenia z języków programowania gdzie mieliśmy jakieś 30 różnych języków do liźnięcia :-)

jesteś powiadamiany, ale automatyczne dobieranie stopnia referencji wskaźników, sprawdzanie typów zmiennych run-time to fajne pomysły jak na ten czas. Ale gramatyka van Wijngaardena jest, powiedzmy, lekko srawna :-)

tyż prawda.

Waldek

[...]

Przeginasz. Z wielu powodów - już nie będę wnikał w różnice między dialektami, bo to mniej istotne. Jesli ktoś się _chciał_ nauczyć programować, to nawet w Basicu potrafił robić to dobrze i bez GOTO. Jak mu wbudowany Basic nie odpowiadał, to mógł użyć rozszerzonego - na przykład na Spectrum był rewelacyjny BetaBasic3 - z procedurami, funkcjami, przekazywaniem parametrów oraz z mozliwością... wyłączenia numerowania linii. I programowanie w takim Basicu mogło czegoś nauczyć. Commodorowcy mieli (o ile mnie skleroza) SimonsBasic, a Atarowcom pozostawał Tape error po 30 minutach ładowania programu ;-P

Pascal jako język do startu jest jednak zbyt wydumany, C zbyt oderwany od rzeczywistości. A ich implementacje na zabawki z początku lat

80-tych - bardzo słabe. [...]

Najlepszy basic z jakim mialem doczynienia byl w C128 (V7..jak to brzmialo wtedy ;-) ). Atarowcy... basic tez mieli od reki o ile pamietam...a moze to tylko w wersji XL bylo?

__ Pzd, Irek.N.

A wiesz, jaka firma go napisa³a? :-)))

Pozdrawiam Piotr Wyderski

Pascal jako jêzyk do startu jest jednak zbyt wydumany, C zbyt oderwany

Pascal wydumany :) ????? przecie¿ nic takiego niezwyk³ego w nim nie ma. C oderwany od rzeczywisto¶ci ? W sumie to du¿ej ró¿nicy pomiêdzy Turbo Pascalem a C nie widzê. Mo¿e poza tym ¿e C jest trochê mniej denerwuj±ce bo zamiast begin i end robi siê po prostu klamry. Turbo Pascal wygl±da tak jak wygl±da (jest wrêcz ³opatologiczny) bo powsta³ na potrzeby prowadzenia wyk³adów (w³a¶nie po to aby pocz±tkuj±cy ³atwo mogli zrozumieæ programowanie). A C jest w³a¶ciwie tym samym co pascal tyle ¿e jest przeznaczony do realnego pisania dla ludzi którzy ju¿ wiedz± na czym to wszystko polega (ich poprostu pisanie begin end itd. ju¿ denerwuje bo tylko palce siê na tym mêcz±). Kod dla kogo¶ do¶wiadczonego wcale od czego¶ takiego nie robi siê bardziej czytelny wrêcz przeciwnie. Teraz na studiach zaczyna siê naukê programowania w³a¶nie od Turbo Pascala i my¶lê ¿e nie jest to jaki¶ b³±d, bo ten jêzyk do tego siê nadaje :) i w sumie tylko do tego bo do pisania to ju¿ tylko C a w³a¶ciwie to C++.

Bladego pojecia nie mam, ale juz sie zaczynam obawiac... chyba nie zalozyciel atari?

__ Pzd, Irek.N. ps. to by byla hanba, po stokroc hanba ;-)))))

nie całkiem. Pascal powstał na potrzeby wykładów. Turbo Pascal powstał, bo w normalnym Pascalu nie napiszesz większego programu bez guza na pupie (brak możliwości modulowania programów).

jest takie powiedzenie "a fool with a tool is still a fool". Jak człowiek myślący to napisze kalkulacje zarobków na maszynie Touringa, jak tylko to jest pod ręką. Programowania zacząłem się uczyć na Algolu

60 (teoretycznie, bo maszyny pod nosem nie było). Potem był Fortran. Następnie Pascal, praktycznie przez całe studia trochę dłubałem w Pascalu. Robota przycisnęła do C, to się nauczyłem. Jak z nudów zacząłem studiować dodatkowo informatykę, to tam "kazali" najpierw napisać algorytm neutralnie, a język programowania dobrać do problemu. Oczywiście jest to świetny pomysł, na uczelni. W praktyce nie będziesz operował cylionem języków programowania w firmie, bo kto to będzie robił. W końcu liznąłem jakieś 20 języków programowania i w sumie nie żałuję. C++ weszło "samo", bo było trzeba. Ale jak siedzę rok nad projektem w C++, to mam kłopoty z przełączeniem mózgownicy na Pascala czy Javę. Ale po paru godzinach problem przechodzi.

Waldek

Microsoft. :-)

Pozdrawiam Piotr Wyderski

Zartujesz...to oni wtedy...istnieli? ;-)

Niech pomysle... przed 1984 opublikowano PC-ta w wersji AT? __ Pzd, Irek.N.

A co to ma wspólnego z AT? Basic jest tak naprawdę chyba jedynym w pełni autorskim produktem Microsoftu. I był w czasach przedpecetowych

- pod TRS-DOS (TRS-80, w Polsce znany jako Meritum), pod CP/M i w ROMach wielu zabawek z tamtego okresu.

Ale ja piszę o dopalaczach a nie Basicu z ROMu...

No ty¿ fakt. Z tego co pamiêtam :) to TP te¿ nie by³ rewelacyjny by³y w nim problemy z przydzielaniem pamiêci bo pierwsze 640k by³o traktowane inaczej ni¿ pozosta³a pamiêæ RAM ;) pamiêtam ¿e napisa³em w tym grê ale z t± pamiêci± mia³em straszne problemy bo bitmapy nie da³o siê wstawiæ do zwyk³ej tablicy tylko strasznie kombinowaæ trzeba z tym by³o (no a mo¿e po prostu wtedy za kiepsko programowa³em ¿eby to dobrze zrobiæ :). Jednym zdaniem zawsze tam by³o pod górkê. No i co by³o najgorsze nie by³o Internetu i nie by³o siê kogo poradziæ.

Kiedy¶ pisa³o siê programy na dziurkowanych kartach i m±dro¶ci raczej to nie wymaga³o (bo skomplikowanych programów w tym siê i tak nie da³o napisaæ). Co najwy¿ej obliczenia na poziomie szko³y ¶redniej.

No to jest tak jak z normalnymi jêzykami im wiêcej ich umiesz tym szybciej uczysz siê nastêpnych (tylko jak nauczysz siê ich za du¿o to zacznie ci siê wszystko równo pl±taæ i nie bêdziesz wiedzia³ czy dane s³owo jest po hiszpañsku czy po rosyjsku choæ bêdziesz wiedzia³ co ono oznacza :). A problem le¿y nie tyle w samym jêzyku (bo prze³±czenie siê na inn± sk³adnie nie jest a¿ tak wielkiem problemem) go¿ej jest z prze³±czeniem siê na inne ¶rodowiska programistyczne inne biblioteki, kontrolki etc. :( no ale microsoft na szczê¶cie robi ju¿ z tym powoli porz±dek.

Niewiele, ale zapamietalo mi sie w glowie Bill->garaz->OS IBM-a, wiec jakos skojarzylem ze faktycznie czas zgodny :-)

__ Pzd, Irek.N.

No owszem.

Eeeee. Co to jest "normalny pascal" ? moze i faktycznie modulowanie bylo problemem, ale w pascalu powstalo sporo sporych programow zanim jeszcze zaistnial TP. Bardziej wymagajacy zrobili sobie Module.

A TP powstal zeby latwo pisac programy. Przyciagal zintegrowanym edytorem, debuggerem, mozliwosciami - np oblsuga wyjatkow, mozliwosciami interaktywnymi. Zebym nie sklamal .. pierwsza wersja byla chyba na CP/M, unity pojawily sie chyba dopiero w TP3 ..

Hi hi - kompilator Fortranu napisano ... w Fortranie. Dla mlodszych - ten jezyk w ogole nie mial sladu przetwarzania tekstow. Jedyne co mozna bylo zrobic to wgrac linie tekstu do tablicy integerow 32-bit [na Odrze - 24 bit] .. cala reszta kompilacji juz na numerkach

Robiles robiles. Bo w Fortranie nie da sie przetwarzac tekstow, Pascal nie mial bilioteki graficznej [NIE mowie o TP na PC], PL/I swietnie sobie radzil z operacjami plikowymi itd.

Dopiero pozniejsze lata to pewna unifikacja mozliwosci programow. No i z chwila rozpowszenienia komputerow personalnych a nie jednego "mainframe" doszla kwestia kosztow - duzo jezykow na duzo komputerow to duze koszty ..

J.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required