Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.

C och C++ är skitspråk, datorspråkens PC

Tråden skapades och har fått 55 svar. Det senaste inlägget skrevs .
  • Medlem
  • Gävle
  • 2003-08-12 16:03

Fråga.
Ska precis börja plugga lite programmering på högskolan, vi ska börja med Turbo Pascal.
Frågan är om man då ska fortsätta med Pascal eller se det som ett steg på vägen mot andra/bättre språk?
Pascal/VisualBasic? C/C++?

begin
write('help')
end

run:

  • Medlem
  • Ängelholm
  • 2003-08-12 16:15

Pascal är ett utmärkt undervisningspråk när det gäller "konventionell"/procedural programmering, men har numera lite spridning. TP har utvecklats till Dephi som är objektorienterat, det kan vara av intresse att titta på detta i förlängningen. Jag skulle definitivt föredra Delphi före VB. VB:s styrka ligger i att det är Microsoft.

Till skillnad från andra i den här tråden så är jag komfortabel med att programmera i C++. Visst har det brister och det varken litet eller lätt att lära sig, men trots allt finns det till de flesta plattformar.

  • Oregistrerad
  • 2003-08-12 16:20

Det spelar ingen roll vilket språk du lär dig, det viktiga är att du lär dig problemlösning, design och god programmeringsteknik. Detta ska vara det viktiga i kursen (om inte så skulle jag säga att det är nåt fel på kursen).

Om du sedan tittar på imperativa/procedurella språk som Pascal, C, Modula-2, Basic, etc så fungerar de likadant. Det är bara syntaxen som skiljer.

Om du sedar går över till OO språk så skiljer sig en del av "tänket" bakom men även där så har du en hel del från imperativ/procedurell programmering med.

  • Medlem
  • Ängelholm
  • 2003-08-12 23:08

Jag håller helt med föregående inlägg, det är en bra metodik som är det viktigaste. I det ljuset är Pascal enligt mitt tycke bra att börja med eftersom det är tämligen hårt typat och styr upp väl. På så sätt är det mindre risk att lära sig en massa olater från början.

Citat:

Skrevs ursprungligen av gpd
Pascal är ett utmärkt undervisningspråk när det gäller "konventionell"/procedural programmering, men har numera lite spridning. TP har utvecklats till Dephi som är objektorienterat, det kan vara av intresse att titta på detta förlängningen.

Så den här gamla tråden har vaknat till liv. Jag kan inte låta bli att lägga mej i den och skriva av mej lite aggressioner.

Det låter nästan som om du har missat vilket språk som var det första objektorienterade språket för kommerisell programutveckling. Det var Object Pascal och plattformen var Macintosh. Det var innan C++ ens fanns.

Pascal duger till mycket mer än "undervisningsspråk". Dess största brist är helt enkelt att det finns för få användare. Trist, nu när portabilitetsproblemet blivit allt mindre. (Jag skriver utan större problem Pascalkod som kompilerar på både Mac och PC. API'erna är största problemet.)

Delphi är intressant, men jag tycker nog att andra Pascalkompilatorer också är intressanta. Räkna med att alla nutida Pascalkompilatorer har OO-tillägg.

Jag hade nästan slutat tala om för folk att jag föredrar Pascal (och andra läsbara språk) framför C, men på de senaste dagarna har jag två gånger pratat med folk som precis som jag föredrar "läsbart". Fram för GPC för Macen! Eller Ada!

ace4711 (i ett inlägg som jag inte anar hur gammalt det är men jag råkade se det nu): Tror du verkligen att "register" har nåt med optimering att göra idag? På en PDP-11, ja. På en modern dator, knappast. Kompilatorn ska själv räkna ut vad som bör hamna i register. På sin höjd tar den dina "register" som förslag, men du slösar bara energi på optimering som inte finns.

Redan på 68040 kunde jag experimentellt konstatera att skillnaden i hastighet mellan C och Pascal var obefintlig. Numera är det ännu mer sant, för flaskhalsarna ligger inte i några instruktioner hit eller dit. Sånt försvinner i cache och pipelining.

Intressant iakttagelse att fundera på: När Apple skrev om Finder från Pascal till C++ blev den betydligt långsammare.

Citat:

Skrevs ursprungligen av gpd
Jag håller helt med föregående inlägg, det är en bra metodik som är det viktigaste. I det ljuset är Pascal enligt mitt tycke bra att börja med eftersom det är tämligen hårt typat och styr upp väl. På så sätt är det mindre risk att lära sig en massa olater från början.

...eller inte eftersom Pascal inte är objektorienterat. En bra metodik fås genom att lära sig UML och sen passar väl Java bra som objektorienterat språk. Läste själv Pascal på tekniska högskolan i Lund 1994 men idag har man helt övergått till Java som undervisningsspråk. Annars är väl verkligheten sådan, i alla fall i min bransch, att C och C++ är de helt dominerande språken... Sen finns ju även C# som enligt vad jag hört skall vara väldigt likt Java. Men som sagt, ofta sitter man med en existrande kodbas så man behöver i princip aldrig klia sig i huvudet om man skall köra C++ eller Ada. Av tidigare inlägg så är det nog fortfarande så att det krävs bla ett typsäkert språk som Ada för militära projekt med hög säkerhetsklassificering. Sen kan man säkert i vissa lägen komma undan med inskränkning i syntax hos andra språk.

  • Oregistrerad
  • 2003-08-13 00:26

Jag håller med om läsbara språk (även om jag alltid föredragit Modula-2 när det gäller imperative språk ... men skillnaden är ju inte så stor) men hur var det med Simula. Fanns det inte för "kommerisell programutveckling" innan Objekt Pascal?

Jag har ingen aning men med tanke på att det kom tidigt (60-talet historia ), och användes som undervisningsspråk tidigt så undrar jag. Och hur var det med SmallTalk (tidigt 70-tal historia )

  • Oregistrerad
  • 2003-08-13 00:33

Som undervisningsspråk (första kurs) så är jag inte övertygad om att OO språk är bra (kan vara, men jag har mina tvivel) och även om Java är ganska trevligt så har det en mängd nackdelar också (som undervisningsspråk alltså) ... fast C++ är ju värre.

Citat:

Skrevs ursprungligen av Ingemar Ragnemalm

ace4711 (i ett inlägg som jag inte anar hur gammalt det är men jag råkade se det nu): Tror du verkligen att "register" har nåt med optimering att göra idag? På en PDP-11, ja. På en modern dator, knappast. Kompilatorn ska själv räkna ut vad som bör hamna i register. På sin höjd tar den dina "register" som förslag, men du slösar bara energi på optimering som inte finns.

Nu tycker jag du läser mitt inlägg på ett medvetet misstolkande sätt. Det känns som om du försöker säga att du i ditt yrkesliv kämpar mot rabiata pascalhatare eller intoleranta C-älskare. Jag är en varm förspråkare av att man skall välja verktyg efter jobbet. Det finns ingen silverkula som knäpper alla problem. Jag upplever det snarare så att det är du Ingemar som är lite intolerant och provocerande och nedvärderande med avsende på en relativt marginell företelse som valet mellan Pascal och C.

Jag bara ville ge konkreta exempel på vad det finns för fördelar med det ena över det andra eftersom det efterfrågades.

Registerdeklarationer. Ingen modern dator? Vad sitter det för modern dator i min mobiltelefon? Visst, registerdeklarationer låter man kompilatorn sköta i dom flesta fall. Men, det kan finnas fall då man kan förbättra prestande genom att du som programmerare vet mer om dom tighta kritiska looparna än din kompilator. Registerdeklartioner har alltid bara varit "hintar" eftersom varken C eller Pascal vill binda sig till specifik hårdvara. Skillnaden är att man kan ge dessa hintar i C.

  • Medlem
  • Stockholm
  • 2003-08-13 01:28
Citat:

Skrevs ursprungligen av Creops
Fråga.
Ska precis börja plugga lite programmering på högskolan, vi ska börja med Turbo Pascal.
Frågan är om man då ska fortsätta med Pascal eller se det som ett steg på vägen mot andra/bättre språk?
Pascal/VisualBasic? C/C++?

Pascal är jättebra att börja med!

Jag kom i kontakt med pascal tidigt i min bana (BASIC och HyperTalk dessförinnan). Värdet av detta insåg jag först när jag läste programmering på högskola (Java) och såg vilka problem mina klasskamrater hade. Pekare kräver viss förståelse för hur datorns hårdvara fungerar, och klasser kräver absolut att du redan kan ett procedurellt språk som Pascal.

Pascal har precis rätt begränsningar för att få en nybörjare att tänka i rätta banor

Svar på din fråga: prova flera språk! Har du satt dig in i 5 eller fler så har du förstått principerna bakom programmering och då är du inte längre bunden till ett något särskilt språk. Bra va?

  • Medlem
  • Stockholm
  • 2003-08-13 01:41
Citat:

Skrevs ursprungligen av Ingemar Ragnemalm
Intressant iakttagelse att fundera på: När Apple skrev om Finder från Pascal till C++ blev den betydligt långsammare.

Classic-systemet var ju designat för Pascal, alla som skrivit C för gamla OS vet hur man måste konvertera strängar hit och dit. Gamla Pascal-APIn använde sig också av de fantastiska skrivbara argumenten typ görDetHär (a,b,...) där a är en variabel som görDetHär kan ändra innehållet i. Inga pekare här inte!

C++ är typexempel på att flest onödiga funktioner alltid vinner massornas gillande. Men Macen innebär: less is more!

PS. nej Apple har inte valt C++ även om man kan använda sig av det. OS X är baserat på Objective C!

Man kan ju använda det språk som Apple använder för att få igång sina datorerna.

Forth

http://developer.apple.com/hardware/

Titta efter eller sök på Forth, det är en bit ner på sidan.

Dom har också två PDFer man kan tanka hem med info om det hela.
http://developer.apple.com/hardware/pci/index.html#oftutorialpresentations

Forth har god läsbarhet...

: star 42 emit ;
star
: stars do star loop ;
5 stars

Inget C inget UNIX.

"The C programming language was devised in the early 1970s as a system implementation language for the nascent Unix operating system."
Dennis M. Ritchie

Källa:
http://cm.bell-labs.com/cm/cs/who/dmr/chist.html

När jag lärde mig C via en kvällskurs på Kursverksamheten under två terminer så hade vi inga datorer i salen. Den mycket bra läraren, Golam Muhadjeri (reserverar mig för stavfel), hävdade att programering inte kräver datorer, däremot så gör kodning det. Och kursen handlade ju inte om kodning.

Idag skrivar jag gärna ANSI C på Macen med Apples GCC och portar den sedan över till PC vid behov. Har en urgammal Watcom 10 compiler som faktiskt fortfarande fungerar bra. Jobbar i Win95 men kör programmen under Win2000.

Watcom "dog" vid version 11 men har tydligen återuppstått som OpenWatcom.
http://www.openwatcom.org/

Så den här gamla tråden har vaknat igen. Jag hade nästan glömt den. Jag vågar inte uttrycka mig så där längre, det är så jobbigt om det blir gräl av det.

Ursprungligen av BitBLT:

Man kan ju använda det språk som Apple använder för att få igång sina datorerna.

Forth

Oj, det var ett gammalt bortglömt språk. Länge sedan jag använde det. Används det seriöst idag?

Ursprungligen av olov:

Nu har jag skummat (jag kan ha missat viktiga inlägg) igenom hela denna tråden men jag kan inte riktigt förstå dess syfte.

...

Ut och leta efter ditt favoritspråk, den som söker skall finna. Och hittar du inget? Skriv ett själv.

Det låter som om du förstått rätt mycket av tråden. Om precis det var syftet minns jag inte men din slutpoäng är precis vad jag brukar säga.

Men möjligheten att välja är tyvärr inte alls så stor. Förvånande många människor väljer aldrig, de jämför aldrig, de bara tar det folk säger att man "skall" använda och låser sig där. Och sedan tvingar de andra in i samma fålla, och en följd är att alternativen blir allt svagare. Jag brukade hoppa mellan alla språk jag kunde komma åt, och än idag lär jag mig nya när jag hinner.

Som jag minns det så startade jag tråden delvis i frustration över att knuffas in i C/C++ och Java, båda fullkomligt gräsliga språk. När jag startade tråden såg jag hur alternativen bara försvann, det var C++/ObjC eller Java. Jag harvade i snårig och oläsbar kod och mådde inte bra.

Det är några år sedan nu, och mycket har hänt. För mig är det bättre. Efter att FPC på allvar blev att räkna med så har jag gått tillbaka till Pascal, eller inte precis gått tillbaka utan vidare. För FPC är inte alls som Pascal var, det har så mycket mer, bra moderna funktioner, så min kod är snyggare och stramare än någonsin. Jag portade en bunt C-kod till FPC och det blev snyggare, mer lättläst, och de flesta manuella minnesallokeringar och många pekare försvann.

Det som slår mig är att jag gjort precis samma sak förut, bytt från C-språk till Pascal. För länge, länge sedan bytte jag från Think C till Think Pascal. Nu har jag bytt från Java/MWC/GCC till FPC. Båda gångerna gick jag från harvande i träsk till bättre fart och resultat. För mig personligen, mycket positivt, trots att jag inte har den eleganta utvecklingsmiljön.

Min slutats är inte att FPC är svaret på allt, men att man måste testa alternativen och röra på sig ibland. Den "enda lösningen" passar inte alla. Uppenbarligen trivs en del folk med C-familjen, grattis, använd det då, men alla hör inte dit. Jag tror väldigt många skulle trivas bättre någon annan stans.

Som lärare våndas jag över språkfrågan. Studenterna slösar mycket tid på råddigheten i C eller Java. Python är inte så mycket bättre som det sägs. Det finns inget undervisningsspråk längre! Vi borde ha ett språk som är rakt, tydligt, där saker betyder vad de ser ut att betyda och det som är enkelt verkligen uttrycks enkelt och begripligt. Och det har vi inte. Skall vi köra nybörjarkurserna i Matlab eller JavaScript?

  • Medlem
  • Stockholm
  • 2009-06-30 16:23

(Om Forth)

Ursprungligen av Ingemar Ragnemalm:

Oj, det var ett gammalt bortglömt språk. Länge sedan jag använde det. Används det seriöst idag?

Forth är ju en del i Postscript, så det används i allra högsta grad idag. Dock inte för programutveckling vad jag vet.

Jag tycker Forth kan ha ett visst värde i undervisning, inte som nybörjarspråk utan då man kommit dit att man vill implementera en egen tolk t.ex. eller vill studera hur litet ett "språk" kan vara.

Ursprungligen av Ingemar Ragnemalm:

Som lärare våndas jag över språkfrågan. Studenterna slösar mycket tid på råddigheten i C eller Java. Python är inte så mycket bättre som det sägs. Det finns inget undervisningsspråk längre!

Själv trivs jag både i C och Java, men håller med om att de kanske inte är de bästa nybörjarspråken (speciellt inte C).

Varför gillar du inte Python?

Vad tycker du om Ruby?

  • Medlem
  • Stockholm
  • 2009-07-01 15:54

Ah, en klassiker kommer åter. Alla språk springer ju ur en historisk kontext, och jag vet inte varför C spöade Pascal, men det som i dag är synd, var måhända det riktiga beslutet då.

Jag som nästan bara skrivit i C och Obj-C, kan inte se vad som är så illa med de språken, och jag misstänker att folk som kommer från andra håll har svårt att se fördelarna. Tror att programmerare, liksom inlärare av naturliga språk förvärvar en sk. inlärd irritation. Det som inte fungerar eller låter som man lärt sig, ter sig svårbegripligt, irriterande och fult.

Jag har t. ex. vissa problem med att läsa Obj-C 2.0:s dotsyntax, medan (misstänker jag) de som kommer från Java finner det oerhört smidigt, och inte alls fult som hakparenteser. Hillegass tycker att dotsyntax är "silly" eftersom det redan finns en fungerande syntax, och jag hoppar till när Hillegass uttrycker värderingar i sin programmeringsbok; ja, själva texten hoppar upp från sidan.

När jag får tid skall jag kanske ta en titt på Pascal igen. Det var ett tag sedan nu.

Men vad är det för fel på C och C++?

Vänligen, Ylan

  • Medlem
  • Järfälla
  • 2009-07-01 16:24
Ursprungligen av Ylan:

Men vad är det för fel på C och C++?

Man måste kunna programmera och man måste kunna programspråket bra. Modernare språk som tex Java tycks vara mycket mer motståndskraftigt mot dåliga programmerare. Har man stora team som jobbar med systemutveckling så skiter det sig om det kommer in några få mindre bra programmerare i C/C++. I java världen behöver man bara ha kanske en kompetent person per fem programmerare.

  • Medlem
  • Stockholm
  • 2009-07-02 00:33
Ursprungligen av pme:

Man måste kunna programmera och man måste kunna programspråket bra. Modernare språk som tex Java tycks vara mycket mer motståndskraftigt mot dåliga programmerare. Har man stora team som jobbar med systemutveckling så skiter det sig om det kommer in några få mindre bra programmerare i C/C++. I java världen behöver man bara ha kanske en kompetent person per fem programmerare.

Är det minneshantering du tänker på?

För i så fall är det väl så att även mycket kompetenta programmerare tenderar att skriva kod som läcker, och att det finns, åtminstone i Obj-C mekanismer för smidigare minneshantering med retain/release, och numera även garbage collection.

Vänligen, Ylan

  • Medlem
  • Järfälla
  • 2009-07-02 07:47
Ursprungligen av Ylan:

Är det minneshantering du tänker på?

För i så fall är det väl så att även mycket kompetenta programmerare tenderar att skriva kod som läcker, och att det finns, åtminstone i Obj-C mekanismer för smidigare minneshantering med retain/release, och numera även garbage collection.

Vänligen, Ylan

Minneshantering är del. Men det är många andra delar som ingår. Felhantering, hur man skriver kod som fungerar på olika plattformar och arkitekturer osv.

  • Medlem
  • Linköping
  • 2003-08-13 10:40

Nu har jag skummat (jag kan ha missat viktiga inlägg) igenom hela denna tråden men jag kan inte riktigt förstå dess syfte.

Idag, om någon gång, så är det ju lättare än någonsin att välja språk. "Olika språk för olika ändamål" verkar ju t.o.m nybörjarkidsen ha som matra numera.

Vi har scriptspråks-familjen:
Python har (en smula oförtjänt?) fått en närmast religiös anhängarskara och växer i extrem takt, Perl står "stadigt" och Ruby är en uppstickare.

Sedan bland de funktionella språken,
ML blir starkare och starkare. (O)CAML dialekten har en väldigt bra kompilator, SML är standard på många universitet. Microsoft har tagit in F# (fortfarande under beta?) som ett av standardspråken under .NET. F# baseras på OCAML om jag inte missminner mig.

Lisp och Scheme står stadigt. Lisp brukar benämnas som världens näst äldsta språk, som fortfarande är i användning idag. Fantastisk språkfamilj med väldigt mogna implementationer. Jag hörde nämnas att dessa språk "saknar implementationer". Det finns en uppsjö Lispimplementationer, ett hav Schemeimplementationer, både kompilatorer och interpretatorer. Det är en halvklar Cocoa-brygga under utveckling för en CLISP-tolk, vilket möjliggör direkt Cocoaprogrammering under CLISP.

Du har sedan C, C++, ADA, Pascal. ADA som för övrigt nämdes i tråden som en möjlig "ersättare" till C. Galet. Vad sägs om lite Forth för den som har gamla numeriska funktioner, hört talas om BLAS? Java som är både ett språk och en plattform. Haskell som är ett äkta funktionellt språk med lazy evaluation.

Det bästa av allt, du kan hitta fria implementationer till alla dessa språk. Är du nyfiken så ladda hem och prova språket. Dokumentation finns gratis likaså, referenser åtminstone. Ofta finns hela böcker.

Jag skulle aldrig få för mig att använda C till allt jag gör, men jag känner mig heller aldrig tvingad till det. C++ likaså. Det skrivs bryggor mellan olika språk och plattformar som aldrig förr, bara för oss Mac användare är detta klart påtagligt.

Ut och leta efter ditt favoritspråk, den som söker skall finna. Och hittar du inget? Skriv ett själv.

  • Oregistrerad
  • 2003-08-13 20:30
Citat:

Skrevs ursprungligen av Jan Erik Moström
Jag håller med om läsbara språk (även om jag alltid föredragit Modula-2 när det gäller imperative språk ... men skillnaden är ju inte så stor) men hur var det med Simula. Fanns det inte för "kommerisell programutveckling" innan Objekt Pascal?

Jag har ingen aning men med tanke på att det kom tidigt (60-talet historia ), och användes som undervisningsspråk tidigt så undrar jag. Och hur var det med SmallTalk (tidigt 70-tal historia )

Ta kontakt med Göran Fries på Lunds Universitet han älskar simula och kompilatorn man kodar har ett run time system byggt för simula. Han borde ha koll på det. www.cs.lth.se

  • Oregistrerad
  • 2003-08-13 20:32
Citat:

Skrevs ursprungligen av arru

Svar på din fråga: prova flera språk! Har du satt dig in i 5 eller fler så har du förstått principerna bakom programmering och då är du inte längre bunden till ett något särskilt språk. Bra va?

Sanning med modifikation, förstår vad du menar men kan du 5 språk som java, obj.c, c++, python, c så innebär det inte att du kan Haskell eller Prolog eftersom de skilljer sig på en del punkter.

  • Medlem
  • Gävle
  • 2003-08-15 10:52

Finns det något hyfsat program till Macen för att skriva i Pascal?
Hittade en gammal kopia av Think Pascal, men den ser ju ut som stenålder... och verkar inte köra programmen riktigt :-/

kör 10.2

  • Oregistrerad
  • 2003-08-15 11:03

Finns det inte nån Pascal som funkar med GCC? Fråga Ingemar R.

  • Medlem
  • Linköping
  • 2003-08-15 11:20
Citat:

Skrevs ursprungligen av Creops
Finns det något hyfsat program till Macen för att skriva i Pascal?
Hittade en gammal kopia av Think Pascal, men den ser ju ut som stenålder... och verkar inte köra programmen riktigt :-/

kör 10.2

GNU Pascal kanske?

  • Medlem
  • Mölndal
  • 2009-06-30 15:02

Det vore intressant att höra vad du har att säga om språken i .NET-världen! Tänker då främst på VB.NET och kanske F#. (C# får vi väl anse bashat i samma mening som Java.)

  • Medlem
  • Mölndal
  • 2009-07-12 22:10
Ursprungligen av memark:

Det vore intressant att höra vad du har att säga om språken i .NET-världen! Tänker då främst på VB.NET och kanske F#. (C# får vi väl anse bashat i samma mening som Java.)

Ingemar, grymt intressant vore det! Om du har en stund över.

Bevaka tråden