• 2
  • 3
2013-11-15, 10:01
  #25
Medlem
Citat:
Ursprungligen postat av Lper
Försök läs denna text med en god ton. Jag vet att den är väldigt negativ men detta är min uppfattning av C som jag vill dela med mig av, mest för att jag antar att jag har fel och hoppas på att ni kan lära mig att tänka om.

Bli inte arga på mig nu men fan vad jag börjar ogilla programmering. Det tär så helvete på en när man ska lära sig programmering. Om man ska jobba med programmering så kommer man ju fan gå in i väggen innan man blivit 30. Man blir så jävla snurrig i huvudet av att programmera, man känner sig otroligt sliten i huvudet efter en dags programmering. Och fy banne i helvete vad slut man är i huvudet om det går dåligt när man programmerar, om man inte riktigt förstår allt till fullo. Man är ju helt SLUT i huvudet efter det.

Jag undrar varför man ens lär sig C? Det är inte speciellt användarvänligt om du jämför det med PHP. I C måste du definiera datatyperna på precis allt fan du gör. Jag har tröttnat så förbannat på C. Varför i helvete är en sträng egentligen chars som är ihopsatta i en array? I PHP är det så jävla mycket enklare, du bara skriver $namn = "Lper". Så SJUKT mycket mer användarvänligt och allt går snabbare, det ser cleanare ut och man blir mindre snurrig i huvudet!

C känns mer riktat mot linuxanvändare som tror att de är häftigare ju svårare kod de skriver; Att skriva i assembler ger så jävla mycket creds. C, som ändå är ett högnivåspråk, men ändå ett "lägre" språk än PHP, är också jävligt coolt att skriva i eftersom det är svårare än töntiga språk som PHP som är lättanvändliga.

Varför lär man sig ens C? C känns ju bara så jävla krångligt jämfört med alla andra högnivåspråk.

Äsch... Du är bara frustrerad för att du inte har greppat det än, men det kommer. Titta på dig själv... Varför försöker du lära dig C? Är det för att vara ball, eller är det för att PHP saknar något du behöver?

Jag har programmerat python i tretton år och började med C för lite mer än två år sedan. Det berodde på att python inte hade hastigheten jag behövde i vissa moment. Jag skrev då en del algoritmer i C och kompilerade dem som python moduler. Det var förbannat bökigt med typer (och dess storlekar), minnesallokeringar och pekare i början (kommandes från Python), men det var verkligen en befrielse när jag slutligen fick grepp på det.
Jag vill hävda att Python, Java och liknande språk är mycket mer komplexa än C i det stora hela. Jag är mycket bekvämare med C än Python idag, eftersom det är så enkelt i sitt utförande. Python har till exempel alltid gett mig huvudvärk för att jag haft problem att ta designbeslut. Det finns för många flummiga alternativ. Jag har suttit och spekulerat bort många timmar eftersom jag inte kan besluta hur jag ska bemöta problemen mest effektivt. Det här går mycket lättare i C eftersom det är betydligt snävare.
Sedan har jag aldrig kunnat greppa OOP riktigt. Jag är kanske dum i huvudet, men det fungerar inte i min hjärna. Jag hamnar alltid i hönan-eller-ägget-runkande när det blir komplext. Nu är ju inte Python beroende av OOP, men vill man vara effektiv med det så är det en klar fördel om man kan det. Med den möjligheten utraderad i C känner jag mig mycket mer bekväm och självsäker, vilket gör det mycket lättare för mig att utveckla. Det blir mer kod att skriva, men jag tycker det är värt det. Jag tar igen det på att saker faktiskt blir gjorda och färdiga.
__________________
Senast redigerad av FaderBerg 2013-11-15 kl. 10:29.
Citera
2013-11-15, 16:50
  #26
Medlem
Det du programmerar i alla språk förutom assembler/maskinkod är egentligen en abstraktion, inte en dator/processor. C är format efter hur processorer har fungerat de senaste 30 åren, så styrkan är att abstraktionen väldigt mycket liknar hur datorer fungerar i verkligheten. Snabbhet i första hand och användarvänlighet i andra hand gör att du blir tvungen att lära dig, använda och hålla ordning på krångliga saker som pekare, oinitialiserade variabler och odefinierat beteende.

Om du vill ha 1000 stycken random-stora listor i minnet som kan växa och krympa fritt, fixar scriptspråket det åt dig. Om det är ett bra språk, gör det det väldigt effektivt, men fortfarande på ett generellt sätt. Om språket visste exakt hur du ska använda listorna, kunde det kanske ha föreslagit en mycket snabbare eller mer minneseffektivare metod att lagra dem, men du vill inte tala om det genom att skriva det. Du vill inte ens tala om vad dina variabler kommer att innehålla. Du vill ha en slags teoretiska variabler och listor som kan lagra vad som helst, och att autopiloten ska sköta detaljerna.

Sen finns det väl historiska, allvarliga brister i C som man inte kan göra sig av med för att miljarder rader av kod skulle sluta att fungera, som att typen char används som byte, att en byte inte behöver vara 8 bit, padding bits, att strängar '\0'-termineras, att man måste stödja andra charsets än ASCII, system som inte använder tvåkomplement osv. Men C är ett så generellt språk att man bara t.ex. kan skapa sina egna stränghanteringsfunktioner eller -makron. Annars har C++ har löst väldigt mycket som C inte gjorde.

Citat:
Ursprungligen postat av decent
Det mesta är väl dock inte spel ändå och många spel behöver väl knappast pressa ut allt av maskinen heller.

Fast ju snabbare datorer, grafikkort och processorer, desto mer vill vi kräma ut ur dem. Jag tror aldrig att vi kommer till en punkt där vi nöjer oss med att datorn startar på 10 sek när den kunde ha startat på 5 sek, eller med vanliga videosamtal när det finns bandbredd och processorkraft för HD. Och en MS Röj som tar 5% CPU-tid istället för 1% är inte så trevligt. Script kommer nog alltid att vara sånt som man kör sällan och som behöver kunna ändras enkelt.
Citera
2013-11-16, 01:16
  #27
Medlem
Citat:
Ursprungligen postat av alef-noll
Fast ju snabbare datorer, grafikkort och processorer, desto mer vill vi kräma ut ur dem. Jag tror aldrig att vi kommer till en punkt där vi nöjer oss med att datorn startar på 10 sek när den kunde ha startat på 5 sek, eller med vanliga videosamtal när det finns bandbredd och processorkraft för HD. Och en MS Röj som tar 5% CPU-tid istället för 1% är inte så trevligt. Script kommer nog alltid att vara sånt som man kör sällan och som behöver kunna ändras enkelt.

Det är väl snarare precis så det inte är. De flesta nöjer sig med att det startar "fort nog", man behöver knappast pressa ut mer ur MS RÖJ. Vid många tillfällen har man inte behovet av ökad prestanda.
Men visst finns också tillfällen där man vill pressa ut maximalt.
Citera
2013-11-18, 00:20
  #28
Medlem
Lpers avatar
Citat:
Ursprungligen postat av decent
Det är väl snarare precis så det inte är. De flesta nöjer sig med att det startar "fort nog", man behöver knappast pressa ut mer ur MS RÖJ. Vid många tillfällen har man inte behovet av ökad prestanda.
Men visst finns också tillfällen där man vill pressa ut maximalt.

Om de flesta skulle nöja sig med att datorns nuvarande prestanda så skulle väl inte komponenttillverkarna tillverka bättre hårdvara konstant?
Citera
2013-11-18, 01:47
  #29
Medlem
Bleppe_Bfs avatar
Citat:
Ursprungligen postat av Lper
Om de flesta skulle nöja sig med att datorns nuvarande prestanda så skulle väl inte komponenttillverkarna tillverka bättre hårdvara konstant?

Det är snarare via moore's lag som du säger snarare än via allt bättre optimering av mjukvaran (annat än kompilatorer) som prestandautvecklingen sker i normalfallet.

Jag skulle nästan vilja säga att de har ett symbiotiskt samband, hårdvaran utvecklas därför att mjukvaran blir tyngre och mindre resurssnål med tiden. Bloat driver mao hårdvarumarknaden.
Citera
2013-11-18, 02:23
  #30
Medlem
Voldemort2s avatar
Nackdelen med C gentemot C++ är ju att det inte går att göra en bra design på grund av avsaknaden av klasser/hierarkier och OOP. De flesta program görs i dag i C++. Dessutom kompilerar de flesta C program i C++-kompilator, då C++ är en superklass till C.
Citera
2013-11-18, 06:41
  #31
Medlem
Citat:
Ursprungligen postat av Voldemort2
Nackdelen med C gentemot C++ är ju att det inte går att göra en bra design på grund av avsaknaden av klasser/hierarkier och OOP. De flesta program görs i dag i C++. Dessutom kompilerar de flesta C program i C++-kompilator, då C++ är en superklass till C.

En högst subjektiv åsikt. Det Värt att påpeka det.
Citera
2013-11-18, 10:11
  #32
Medlem
blackadder1s avatar
Citat:
Ursprungligen postat av Voldemort2
Nackdelen med C gentemot C++ är ju att det inte går att göra en bra design på grund av avsaknaden av klasser/hierarkier och OOP. De flesta program görs i dag i C++. Dessutom kompilerar de flesta C program i C++-kompilator, då C++ är en superklass till C.
Det går alldeles utmärkt att använda sig av OOD när man skriver C-kod.
Citera
2013-11-18, 10:46
  #33
Medlem
Voldemort2s avatar
Förvisso, men C är i grunden inget OOP-språk.
Citera
2013-11-18, 15:07
  #34
Medlem
Citat:
Ursprungligen postat av Lper
Om de flesta skulle nöja sig med att datorns nuvarande prestanda så skulle väl inte komponenttillverkarna tillverka bättre hårdvara konstant?

Mja vi pratar nog om varandra en del får jag för mig.
Ursprungliga poängen var snarare att väldigt mycket inte kräver maximal prestanda eller ens i närheten.

Citat:
Ursprungligen postat av Lper
Men är det inte bäst att skräddarsy programmen för specifika plattformer? Tunga spel blir väl inte optimala om man kodar dem i Java?

Och i fallet just "tunga spel" är väl java kanske inte rätt val. Men jag ser frågan mer allmän och därav svaret att många program behöver knappast optimeras något särskilt. I många fall är algoritmerna fel och då spelar språket mindre roll.

Låter snarare som specialfall som behöver prestera maximalt.
Citera
2013-11-18, 15:08
  #35
Medlem
Asgarvars avatar
Varje programspråk har sitt användningsområde, där en del överlappar. Vad man föredrar som programspråk när användningsområden överlappar är i högsta grad subjektiv, så länge hårdvara och systemmiljö tillåter det programspråk man väljer.

/tråd
Citera
2013-11-19, 01:18
  #36
Medlem
Citat:
Ursprungligen postat av Bleppe_Bf
Assembler används väldigt sällan idag, särskilt inte för tunga spel då utvecklarna har en begränsad budget och en deadline på några få månader. De tyngsta spelen brukar till och med vara tunggrodda pga att de är så taskigt optimerade, men det är en helt annan femma.

Prestanda är rätt billigt idag, men när verkligen varje instruktionscykel är dödsviktig så går man ned till lågnivåspråk som assembler, haskell eller fortran och optimerar mjukvaran specifikt efter hårdvaran (som även den kan vara en ASIC ifall det behövs). Det brukar främst användas till automatiserade processer som styrsystem för exempelvis fordonsteknik, industrirobotar, vapensystem och löpande-band tillverkning.

Nu är jag inte nån expert inom området så ta allt jag säger med en nypa salt (är C++ programmerare men inte inom spelindustrin) men jag kan tillägga att det absolut viktigaste idag ifall du vill ha ut maximal prestanda av en applikation är hur du hanterar ditt minne. Språk som Java och C# är designade för att hantera minnet åt dig och medans det är väldigt bekvämt för vanliga applikationer så kan det innebära döden för realtidssystem såsom prestandakrävande spel. Extra viktigt blir det när man programmerar för konsoler då dessa kan ha en väldigt lång pipeline och en arkitektur som kräver att du delar upp minnet på ett väldigt speciellt sätt (PS3).

Om man skriver ett vanligt spel/motor för PC och inte satsar på att göra nästa Frostbite Engine eller Crysis så skulle jag säga att Java/C# fungerar utmärkt dock
Citera
  • 2
  • 3

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in