BASIC umozni prejst na tuto platformu aj pocetnej skupine BASICodinych programatorov... Takze to nie je az taka zla volba... Aj ked uprimne, neznasam ten jazyk...
Nechapu, proc se vsude ten Pascal cpe. I kdyz, prijde mi, ze cloveka, ktery "vyroste" na Pascalu, musi ceckoidni jazyky docela odstrasovat (ty beginy a endy jsou asi sice tak nejak jako lidstejsi, ale pak je muset furt psat a orientovat se v takovem kodu - nevim nevim
Protoze v jazyce, kde se da napsat pet plusek za sebou (a ma to nejaky vyznam, mimo definici retezce) se nedaji dobre ucit algoritmy. Rozdil Pascal/Cecko rozhodne neni jen ve zmene begin za {. Cekco ma multiple inheritance, function style cast, templaty, tuny veci. Proste je jen jednodussi se nejdriv naucit jazyk, kde je asi tak jeden typ kostruktoru a pak zacit zkoumat jazyk, kde jich je XY.
No jo, ale proc neucit Pyton ?
Ja vse co po mne chteli na VS naprogramoval i v REXu (scriptovaci jazyk OS/2 a IBM Mainfarme ...) ... a to je i ObjectREX (de fakto uz jiny neni a umi oba)
hovno hovno zlata rybka, kto ma za sebou Basic, Pascal, C/C++, Asm, Lisp a Ruby nema ani 'obtize' ani 'potize'. To skor ludia ktori nevedia C(++) maju potiaze, nevedia narabat s pamatou. Taky packalisti a bejzikisti su zabedneni ludkovia bez predstavy o metaprogramovani :) A mnohe 'marketingovo moderne' jazyky ich v tej zabednenosti utvrdzuju.
Kazdopadne ludi, co takto programuju bych rovno prepustal aj s poziadavkou vratit plat. V nasom teame sa taki najdu a je to fakt hroza citat ich kryptograficke sracky a nieto este debugovat :)
Já jsem "vyrostl" na Pascalu a abych pravdu řekl, rozdíly mezi C a Pascalem jsou minimální. Oba jazyky vycházejí z Algolu. Pascal vysunul deklarace z bloků, C zase nahradilo dlouhá klíčová slova kryptickými značkami (ale to snad každý aspoň poloviční inteligent zvládne). Ostatní rozdíly (možná s vyjímkou přepínače) jsou zanedbatelné. Algol jako Algol...
muj dotaz je spis opacny -- co vsichni proti tomu pascalu maji? co se tyce expresivity jazyka je uplne stejna jako u C. otazka begin, end je podruzna. pascal narozdil od C nabizi rozumnou praci s retezci (pro radu programau docela fundamentalni oblast) a pro zacatecniky dalsi velkou vyhodu -- minimalni tlak na pouzivani pointeru.
pokud budeme brat jako pascal i jeho dialekt delphi (v linuxu jej podporuje i fpc) tak tady mame dalsi "moderni jazyk" -- typu java a c-kriminal. referencni objektovy model definitivne nahrazuje pointrove peklo, mame tu system vyjimek, RTTI,... atp.
jestli se pak da v takovem kodu orientovat je otazkou stylu programovani videl jsem hnusny kod v c, c++, delphi ale videl jsem i hezky kod c, c++, delphi nebo dokonce perlu!
Rozumnou práci s řetězci v Pascalu? To snad ani ne, ledaže bychom se bavili o Delphi nebo něčem podobném, co jsem už nezažil. Ještě Turbo Pascal nesahal ANSI C ani po kotníky. Pro začátečníky je jistě vhodnější C++ než C, už jenom díky existenci referencí apod.
Pro začátečníky je jistě vhodnější C++ než C, už jenom díky existenci referencí apod.
Podivné tvrzení. C++ je sice objektové, ale už se začínáte zabývat takovými věcmi, jako jsou virtuální funkce, const apod. A reference to dělají ještě složitějším.
Pro začátečníky klidně C, možná ještě Javu či C#, ale C++ v žádném případě.
Naopak, reference to zjednodušují. Vzhledem k tomu, že C nedokáže vracet více parametrů, neexistuje (když nepočítám ukazatele) rozumná možnost, jak ve funkci nastavit více hodnot a předat je volající funkci. Reference je ekvivalentem "volání odkazem" z Pascalu. Klíčové slovo const je také naprosto přirozená záležitost na rozdíl od nesystémového #define. Mimoto existuje i v C.
Objekty apod. jsou věc vedlejší, ty se hned vyučovat nemusí.
const existuje tusim od c99, ale v predxadzajucich standardoch nebolo. #define sluzi aj na kopu inych veci, ktore cez const nevyriesis. syntakticke metaprogramovanie, mnam :-P
na ucenie OOP treba podla mna cisty OO jazyk. (java neni cista, kazia jej to primitivne typy)
No tak, já jsem, ač v Céčku už nějakou dobu soustavně nedělám, nedávno pár maker psal, nemusíš mi vysvětlovat, k čemu slouží #define. :-) Modifikátor const samozřejmě v C byl už dávno, určitě v ANSI a možná už v K&R. Rozdíl je tuším akorát v tom, že v C (nevím, jak v C99) se pro const int alokovalo místo, v C++ o deklaraci hodnoty a ne o definici proměnné.
Klíčové slovo konst je podle mne hrozná věc. U symbolických konstant je naprosto v pořádku, ale u funkcí... Jak začátečníkovi vysvětlíte, že má psát za funkci const, když nebude měnit objekt (tím myslím this)? Že má napsat const před parametr funkce, když nebude měněn? A co takový konstantní ukazatel na konstantní proměnnou? Není toho na začátečníka trochu moc?
Já nevidím důvod, proč učit začátečníka hned všechny rysy jazyka - napsal jsem prostě jenom, že pro výuku základů je C++ vhodnější, protože nabízí více vhodných konstrukcí - že C++ obsahuje tolik věcí, že z nich může příliš zvídavý nováček dostat závrať, je jiná věc. Kromě toho jsem netvrdil, že C je ideální jazyk pro výuku programování. Není, stejně jako jím není Pascal.
to myslite vazne? jedine slabe misto mezi TP a C, je jeho omezeni delky retezce na 256 znaky -- hold neco jako 640kB pro kazdeho... jinak srovnavat praci s retezci v ANSI C s Pascalem snad ani nejde. libc - poskytuje jenom nekolik malo funkci, ktere vicemene obaluji par konstruktu v jazyce symbolickych adres, pascal na rozdil od C ma string jako zakladni datovy typ stejne jako vetsina jazyku -- dikycemuz pro praci s retezci jdou pouzivat operatory nebo dokonce memory managment (pocitani referenci, bezpecne alokace pro navratove hodnoty funkci, roztahovani retezcu podle potreby,...) nechci kecat jake vychytavky mel TP a co az Delphi nebo FPC... protoze uz je to nejaky patek co jsem v pascalu psal...
kazdopadne operace s retezci pomoci strdup, strcat apod. me nepripadaji jako nejhezci reseni... proto nektere systemy zavadi funkce typu snprintf... coz taky neni uplne super reseni.
btw. vase tvrzeni ze C nema reference me pripadne hodne silne. co by delalo c bez referenci, kam by se podeli vsechny ukazatele?
lebo kecas. delphi ano, pascal nie. pascal akurat ze vedel + na stringy, tym cela jeho slava hasla... zbytok prisiel az s delphami. a tie do verzie 5 aj tak nevedeli slusne pole resiznut :-P
btw. tvrdenie o C a referenciach... bavime sa o deklaraciach typu int &ahoj; alebo o com ? :) lebo mam pocit ze niektori diskutujuci nepoznaju referencie tak ako ich chape c++
btw delphi sa vyvijali ryxlo, pokial microsoft neukradol z borlandu jednu mudru hlavicku, odvtedy delphi viacmenej zakapali. a ten typek potom tusim robil na c#.
btw. preco ziadny z delphistov nespomenul ze delphi ma properties a C++ nie ? to ste az taki zabedneni turbopaskalom, ze musim druhemu taboru nahravat na smec ? :D
1. hehe ;-] -- v pascalu je operator prirazeni ":=", "=" je operator porovnani, ktery na retezce funguje tak jak se ocekava. (takze + neni jediny operator)
2. vy nikde -- ale vyse k tomu byli nejake pripominky ;-]
jo, ja vim - i kdyz praktictejsi pouziti je v argumentu funkce...
trval jsem si na svem, protoze nemam rad posunovani obsahu vyrazu do pozice, kde se pak stava jedinym platnym... neco podobneho, je kdyz nekterym lidem reknete slovo framework, tak jediny spravny je ten .NET framework
v pascale := neni operator, lebo operator urcuje operaciu a operacia vracia hodnotu. v pascale nie je (aspon v dobach, ked som v nom robili nebolo) mozne spravit a:=b:=c:=d:=0; kdezto v C to ide, lebo = vracia hodnotu a je to skutocny operator :)
:= akurat urcuje, ze sa jedna o 'prikaz priradenia' a od oka to vyzera ako operator, ale vobec sa to tak nechova ;)
Ačkoliv hodně lidí bude tvrdit opak, podle mého názoru jde o dva zásadně různé jazyky. Každý byl navrhnut k úplně jinému účelu a i když jsou defakto zaměnitelné, některé konstrukce se v každém jazyku píší jinak.
Pascal byl od začátku navržen jako jazyk pro výuku programování a hlavně algoritmizace - je jasný, přehledný, dobře strukturovaný. Když čtete program v Pascalu (a nepsal ho člověk preferující C apod.), pak z něj je obvykle dobře vidět samotný algoritmus. Tím, že je "ukecaný" pak této čitelnosti znatelně napomáhá.
Jazyk C byl navržen jako inteligentní "nadstavba" assembleru. Ačkoliv to dnes někteří lidé popřou, hlavní motivací vytvoření tohoto jazyka bylo doplnění assembleru o konstrukce známé z vyšších programovacích jazyků. V tomto jazyce byl psán operační systém a tomu odpovídá i struktura jazyka - byl postaven právě tak, aby se v něm dobře psal operační systém. Tedy strohé knihovny, rozsáhlé možnosti práce s pamětí, použitelná ale snadno odstavitelná typová kontrola atd.
Každý jazyk je tedy navržen k něčemu jinému a zaměnitelné jsou vlastně "jen" proto, že běží na stejném HW a implementují stejné algoritmy. Když toto akceptujeme, pak nás už nebude zajímat otázka, který jazyk je lepší. Prostě proto, že každý je lepší na něco jiného.
Jinak můj argument proti Pascalu je triviální - proč tím ztrácet čas, když v tom stejně nakonec málokdo bude psát? Jedinou výjimkou je algoritmizace, kdy například ve výpočetní geometrii a počítačové grafice je zvykem psát algoritmy v pseudojazce, který vypadá jako Pascal.
No, moc mi to tak nepřipadá. Strašlivé pascalovské konstrukce assign + reset / rewrite, naprosto nedostatečná podpora základních datových typů, šílenosti typu "packed array", zmatená syntaxe ukazatelů (stříška na začátku, stříška na konci - hrůza oproti C). Navíc, na rozdíl od C, neexistoval dlouho jednoznačný všudypřítomný standard, který by byl implementovaný všude, dnes teda možná FreePascal, nevím. Ale když vidím, jak tady někteří argumentují Delphi...
Pascal byl možná docela vhodný jazyk pro výuku v 70. letech, ale už měl být dávno
jste si tim tak jisty? jako referencni se bere/bral wirthu popis jazyka z roku 1974, pozdeji standardizovany pod iso-7185, tusim nekdy zacatkem osmdesatych let. dokonce na 8-bitu jsem mel implementaci pascalu odpovidajici vyse uvedenemu standardu. na assign/reset,rewrite ne nic spatneho... podle me je to elegantnejsi reseni rozlisovat jestli se soubor otevre pro cteni nebo zapis pomoci argumentu typu string... zalezi na vkusu...
argumentovani syntaxi delphi (prevzatou fpc) je tu na miste, protoze preci jen pise se rok 2006 - jinak se tu muzeme bavit o java 1.0, php/fi 2.0, c# prohlasit za nenarozeny...
Tak to je nedorozumění, omlouvám se. Nějaký standard jistě existoval, ale v "klasickém" Pascalu by asi málokdo chtěl pracovat. A myslím, že Turbo Pascal jej ani plně nepodporoval. Jak je to s Delphi, umí třeba přeložit klasický pascalovský "Hello world" s writeln?
Já na assign/reset+rewrite vidím špatné už to, že je nutné volat dvě procedury, čímž se zbytečně zvyšuje složitost. Kromě toho, dá se v klasickém Pascalu dosáhnout všech funkčních kombinací z C (r, w, a, r+, w+, a+)?
Delphi je Delphi, Pascal je Pascal. Delphi si na Linuxu nebo na MacOS X nespustím, Kylix's dead. Java 2 běží na všech hlavních platformách, o jiných jazycích nemluvě.
je potreba rozlisovat veci jako delphi ide a delphi jako pokracovatele jazyka pascal.
delphi jako jazyk (i jeho prekladac) zvlada klasicke hello world bez problemu. jediny rozdil od tech okennich aplikaci, ktere se v delphi normale delaji, ze se "nespousti smycka zpracovani windows udalosti", kdyz to reknu dost zjednodusene. samotne okynkove aplikace uz nejsou soucasti jazyka, ale pouze jako knihovny (i kdyz o zpracovani udalosti to nejde rict tak primo).
samozrejme v pascalu (pokud budem za klasicky povazovat turbo pascal) lze dosahnout efektu vsech vyse zminenych (je tu jeste varianta funkce -- append). prominte, ale co je z programatorskeho hlediska lepsi reseni - mit uzce specializovane funkce, kde kazda jednoznacne dela to co ma nebo mit jednu univerzalni funkci u ktere se rozhodne co bude delat podle sady magickych konstant?
jak uz jsem psal vyse - je potreba rozlisovat delphi jako jazyk a jeho ide/potazmo runtime... delphi je opravdu jen pro win, ale "jazyk delphi" je velice slusne implementovany ve freepascalu a je dostupny pro vcelku slusnou radku platforem.
Pokud si můžu jako programátor vybrat, volím zlatou střední cestu. fopen() (zjednodušeně) nedělá nic jiného, než že zavolá open() rutinu jádra s příslušnými flagy. Takže dělá jednu věc pořádně.