C
Från Unix.se, den fria unixresursen.
Programspråket C utvecklades i början av 1970-talet av Dennis Ritchie och dess historia är starkt knuten till Unix. C tillhör paradigmen procedurella, imperativa högnivåspråk, som stödjer strukturerad programmering. C är idag fortfarande mycket populärt i unixvärlden men har även vuxit till att bli ett av de största språken överlag.
Som ett tecken på dess framgång finns flertalet språk som bygger vidare på C, exempelvis C++ och Objective-C. Dess syntax är också vida använd av ytterligare språk.
Hello, World i detta programmeringsspråk ser ut enligt
#include <stdio.h> int main(void) { printf("Hello, World!\n"); return 0; }
På Unix kompilerar du detta genom att skriva cc -o hello hello.c (om du nu kallade filen för hello.c).
I många system skulle det även ha fungerat med genvägen make hello.
Egenskaper
Styrkor med C är att det är kraftfullt, effektivt, koncist och väl utbrett.
- Med kraftfullt menas att språket introducerar få begränsningar i utnyttjandet av datorarkitekturen.
- Med effektivt menas att program skapade i C vanligtvis leder till snabba program.
- Koncist innebär att språket i sig är litet (utökad funktionalitet hanteras genom bibliotek). Syntaxen är dessutom koncis.
- Väl utbrett innebär att C är ett av världens mest använda programmeringsspråk. Ett språks utbredelse har en enorm betydelse för dess användbarhet i praktiken.
Svagheter med C är att
- Den dynamiska minneshanteringen saknar automatic garbagecollection. Det medför att program tenderas att skrivas med minnesläckor, vilket leder till dyra konsekvenser.
- Objektorienterat tänk saknas helt, exempelvis en array vet inte hur stor den är själv. C har i praktiken infört buffer overflow-buggen på bred skala.
- C härstammar ur en kortfattad namntradition som ej är intuitiv.
- Typkontrollen är slapp, speciellt pekare tenderas att användas fel då man implicit kan konvertera till/från void-pekare.
- Makrofunktionaliteten kan göra program svårlästa. Ansvarsfullt användande utkrävs av programmerarna, men det kan missbrukas för kodvirus.
I designen av C har man valt ett effektivt användande av datorarkitekturen framför ett intuitivt och enkelt gränssnitt mot användarna. Ett exempel på detta är att en integers (ett heltal) storlek är implementationsberoende. Ur en prestandasynpunkt är detta fullt logiskt då man kan anpassa storleken till arkitekturens registerstorlek. Ur ett användarperspektiv är detta svårbegripligt, då det leder till sämre portabilitet.
Kraftfullheten i C medför att alla svagheter kan hanteras manuellt av C-programmerare, men det kräver konventioner och disciplin för problem som inte är en issue hos moderna språk. Vissa svagheter är nödvändigt ont för att skapa ett effektivt och kraftfullt språk. Söker man andra egenskaper ska man helt enkelt välja ett annat språk. Generellt sett kan man rekommendera C till systemprogrammering, medan applikationer enklare, snabbare, mer buggfritt och billigare kan programmeras i ett objektorienterat språk.
Externa Länkar
- En guide till C (http://www.cs.cf.ac.uk/Dave/C/CE.html)
- En rolig guide under utveckling (http://beej.us/guide/bgc/)
- FAQ för comp.lang.c (http://www.eskimo.com/~scs/C-faq/questions.html)