mboost-dp1

Larry Ewing

Linus Torvalds og Alan Cox sure på hinanden

- Via The H Open - , redigeret af Net_Srak

To af de mest prominente figurer inden for Linux-verdenen, Linus Torvalds og Alan Cox, er raget uklare med hinanden. Så meget at Cox har droppet at vedligholde Linux TTY-laget.

Det hele startede med, at Cox foretog en rettelse i TTY, der medførte, at KDE-projektets SU-utillity ikke længere fungerede. Det mente Torvalds ikke var i orden, og ordveksling fandt sted på den officielle Linux mail-liste.

Cox peger på, at fejlen skal findes et andet sted i kernen og ikke TTY, men det er Torvalds ikke enig i og finder det uacceptabelt, at det går ud over brugerapplikationer.

Linus Torvalds, Linux mailing-list skrev:
The fact is, breaking regular user applications is simply not acceptable. Trying to blame kernel breakage on the app being ‘buggy’ is not OK. And arguing for almost a week against fixing it – that’s just crazy.

Som svar valgte Cox at droppe vedligeholdelsen af TTY med ordene:
Alan Cox, Linux mailing-list skrev:
However I’ve had enough. If you think that problem is easy to fix you fix it.

Have fun.





Gå til bund
Gravatar #51 - Windcape
31. jul. 2009 20:34
Ja, men jeg skrev design time, altså som i at du ved ikke om koden bliver kørt eller ej mens du programmerer, det handler 100% om hvordan koden bliver kompileret.

Jeg bryder mig ikke rigtig om compiler flags (#IF DEBUG osv.) i kode. Det er for ukontrolleret, og bliver alt for tit misbrugt som en form for kommentering.

IF 0 .... ENDIF er noget jeg ofte ser i C kode, istedet for at kommentere størrere kodeblocks ud. (Jeg har en mistanke om at udviklerne ikke har benyttet et IDE med kommenterings-funktionalitet i de sager).

PARANOIA_CHECK er også en underlig navngivning, specielt når formålet bare er at vise eller ikke vise warnings. Burde man ikke skrive et log tool, og altid sende warnings, hvor det så er op til userspace om de vises eller ej?

Gravatar #52 - Windcape
31. jul. 2009 20:41
arne_v (50) skrev:
Jeg er ikke i tvivl om at fremtidens styre systemer vil have en meget lille kerne i C og en masse højniveau uden om.
Det bliver næsten en nødvendighed, da jeg ser den slags koncepter som bliver brugt i f.eks. C koden til Linux kernel, som være dybt sprogafhængigt.

Jeg har allerede luftet nogle meninger om hvad jeg synes det er underligt, så hvis det var mig som lærte C til perfektion nu, og så skrev noget kode dertil, ville det jo være af et helt andet paradigm.
Gravatar #53 - arne_v
31. jul. 2009 21:05
windcape (51) skrev:
IF 0 .... ENDIF er noget jeg ofte ser i C kode, istedet for at kommentere størrere kodeblocks ud. (Jeg har en mistanke om at udviklerne ikke har benyttet et IDE med kommenterings-funktionalitet i de sager).


Hvad skulle IDE'en gøre?

windcape (51) skrev:
PARANOIA_CHECK er også en underlig navngivning, specielt når formålet bare er at vise eller ikke vise warnings. Burde man ikke skrive et log tool, og altid sende warnings, hvor det så er op til userspace om de vises eller ej?


Der kan meget vel være skrappe restriktioner på hvad Linux kernel kode kan gøre.
Gravatar #54 - arne_v
31. jul. 2009 21:09
#C til kerne

http://www.version2.dk/artikel/11510-v2-blogger-fr...

har lidt diskussion omkring emnet.
Gravatar #55 - Windcape
1. aug. 2009 08:06
arne_v (53) skrev:
Hvad skulle IDE'en gøre?
Hvis man kommentere kode ud med IF false, istedet for // , så er der jo noget galt et eller andet sted.
Gravatar #56 - m_abs
1. aug. 2009 08:34
#55

Du er godt klar over at
#IF 0
...
#ENDIF
har samme effekt som (den pænere)
/*
....
*/
, ikke?

Koden i mellem de to bliver fjernet af preprocessoren, så det ikke er en del af runtime.

Hvorfor er den sidste bedre end den første? Personligt synes jeg den sidste er pænere, men smag er et dårligt argument.

Hvad er der så forkert ved #IF 0... #ENDIF?
Gravatar #57 - gnаrfsan
1. aug. 2009 08:38
m_abs (56) skrev:
Hvad er der så forkert ved #IF 0... #ENDIF?

Ideen er faktisk meget god, specielt i sprog, hvor der ikke er flere liniers kommentarer som f.eks. i VB.
Den eneste ulempe, jeg kan komme på er at editorer normalt ikke highlighter det, og det kan mindske læseligheden lidt.
Gravatar #58 - arne_v
1. aug. 2009 12:04
windcape (55) skrev:
Hvis man kommentere kode ud med IF false, istedet for // , så er der jo noget galt et eller andet sted.


Er der noget galt i at kende syntaxen i det sprog man bruger?

// er ikke valid C89 (det er valid C99 men på trods af at det er 10 år siden, så er man generelt ikke skiftet til C99).

Og // naturligvis både valid og meget brugt i C++.
Gravatar #59 - arne_v
1. aug. 2009 12:09
#56

#if 0 #endif har en meget stor fordel over /* */ til fjernelse af store blokke.

De kan nestes.

/* */ breaker hvis der er en /* */ kommentar i det man vil fjerne.

Gravatar #60 - JensOle
1. aug. 2009 12:30
arne_v (59) skrev:
#56

#if 0 #endif har en meget stor fordel over /* */ til fjernelse af store blokke.

De kan nestes.

/* */ breaker hvis der er en /* */ kommentar i det man vil fjerne.


God pointe. Det har jeg aldrig tænkt over.

Måske er de ikke så tossede aligevel de opensource udviklere.
Gravatar #61 - gnаrfsan
1. aug. 2009 13:16
JensOle (60) skrev:
Måske er de ikke så tossede aligevel de opensource udviklere.

Og så alligevel... har fanget Suns udviklere i at bruge goto og label et par gange. Det er godtnok en gyldig måde at programmere på, men tit totalt uoverskuelig.
Gravatar #62 - arne_v
1. aug. 2009 13:31
#61

Nogle har et nærmest religiøst forhold til "Go To Statement Considered Harmful", men i visse tilfælde synes jeg at det er den pæneste måde at gøre tingene på - hoppe ud af dybt nestede kontrol strukturer og i tilfælde af fejl hoppe ned til cleanup kode.
Gravatar #63 - arne_v
1. aug. 2009 13:32
#62

Jeg vil f.eks. til enhver tid foretrække en goto fremfor Java's labeled break.
Gravatar #64 - gnаrfsan
1. aug. 2009 13:46
#62:
De steder jeg så det hoppede de tilbage, og startede noget igen. Men jeg ikke andet imod labels at jeg ikke synes det er nemt at læse.
Gravatar #65 - arne_v
1. aug. 2009 13:50
#64

Dijkstra havde helt klart gode grunde til hans bombastiske udtalelse.

Der kan nemt laves spagetti kode med goto.

Men jeg mener at et sprog bør have goto for de tilfælde hvor det er praktisk.
Gravatar #66 - gnаrfsan
1. aug. 2009 13:51
#65:
Dijkstra er en af de få personer, der er lige så kloge og intelligente, som de er arrogante. Jeg vil nødige undvære Go To og Label, men i de fleste tilfælde, jeg har set dem brugt er der en bedre måde at løse det på. Jeg synes tit at de indikerer et kodemæssigt hov.
Edit: Jeg har aldrig brugt Go To og Label, da jeg aldrig her mødt et sted hvor jeg ikke synes at en løkke eller rekursion er den rigtige måde at gøre det på. Men nu har jeg også kun brugt funktions- og objektorienterede sprog. Udover på studiet (Har self. brugt det da jeg skrev assembler og alu-kode.).
Gravatar #67 - arne_v
1. aug. 2009 14:26
gnarfsan (57) skrev:
Den eneste ulempe, jeg kan komme på er at editorer normalt ikke highlighter det, og det kan mindske læseligheden lidt.


Eclipse CDT gråer det ud.
Gravatar #68 - JensOle
1. aug. 2009 14:41
Når man bruger goto kommer man hurdigt ud i en siuation, hvor man bruger nogle "return" goto's hvis label er en variabel af højere scope. Og så bliver man lige pluselig rigtig snu og ændre lablen under vejs og til føjer nogle andre goto's i nogle if statements og så ligner det lige pluselig noget asembler og er meget svært at de debugge på.
goto er ok man skal bare holde tungen lige i munden. og så giver det mulighed for at lave komplet sindsygt struktureret kode, som er helt uforståelig efter en våd weekend.

Nogel gange savner jeg goto i java, synes ikke rigtigt jeg kan opnå det med break to, men der er somregl en mere object orienteret løsning, der nok også er bedere. Bare man også kunne breake ind istedet for kun ud, men det er vel det der ligger i break ;) ellers ville det jo faktisk være goto.

Kan tildels godt forstå det ikke er med i Java, da det faktisk tvinger en til at strukturere tingene bedere i form af metoder og objecter, hvilket nok givere færre fejl, eller i hvert fald fejl der er nemmere at fange for kompileren.
Gravatar #69 - JensOle
1. aug. 2009 14:47
arne_v (65) skrev:
Men jeg mener at et sprog bør have goto for de tilfælde hvor det er praktisk.


Er det helt forkert at påstå at goto er overflødig, hvis man kan lave funktioner der tager argumenter og retunere noget ?

Det kan være man i nogle(nok mange) tilfælde kan lave mere efektiv kode med goto, men det kommer vel an på kompileren.
Gravatar #70 - Windcape
1. aug. 2009 21:26
arne_v (67) skrev:
Eclipse CDT gråer det ud.
Visual Studio gør ikke.

Men jeg synes stadig at det er dårlig syntaks. Preprocessor statements bør ikke benyttes som syntaks. Og man bør vel heller ikke neste kommentering!
Gravatar #71 - Windcape
1. aug. 2009 21:30
JensOle (69) skrev:
Er det helt forkert at påstå at goto er overflødig, hvis man kan lave funktioner der tager argumenter og retunere noget ?

Det kan være man i nogle(nok mange) tilfælde kan lave mere efektiv kode med goto, men det kommer vel an på kompileren.
Jeg tror der menes i stil med:

for(i=variableStart;i<100;i++)
{
if(i < 50) { goto i=70 }
}

Altså tillade et spring i koden. det er nok mere relevant i noget andet end et array af numre. Men det er med samme formål at PHP implementerede det.

Altså langt fra i samme stil som BASIC goto statements! Faktisk ikke engang tiltænkt som samme funktionalitet.

dog har jeg ikke haft brug for GOTO i C++/Java/C#/PHP/andre i alt den tid jeg har kodet.
Gravatar #72 - arne_v
2. aug. 2009 02:14
windcape (70) skrev:
Visual Studio gør ikke.


Dens fejl.

windcape (70) skrev:
Men jeg synes stadig at det er dårlig syntaks. Preprocessor statements bør ikke benyttes som syntaks.


Preprocessoren er bl.a. opfundet til at inkludere kode og ekskludere kode efter behov.

Den form for brug er ret fundamental i C.

windcape (70) skrev:
Og man bør vel heller ikke neste kommentering!


Man kan ikke neste kommenteringer i C.

Det er derfor man ikke kan bruge /* */ til at udkommentere en stor kode blok med. Fordi sandsynligvis er der en kommentar et sted i den.
Gravatar #73 - arne_v
2. aug. 2009 02:15
windcape (71) skrev:

for(i=variableStart;i<100;i++)
{
if(i < 50) { goto i=70 }
}


Hvilket sprog tillader den syntax og hvad gør den?
Gravatar #74 - JensOle
2. aug. 2009 05:54
arne_v (73) skrev:
windcape (71) skrev:

for(i=variableStart;i<100;i++)
{
if(i < 50) { goto i=70 }
}


Hvilket sprog tillader den syntax og hvad gør den?


Det skulle vel give det samme som :
for(i=variableStart;i<100;i++)
{
if(i < 50) { /*goto*/ i=70; continue; }
}
men sproget er jeg heller ikke med på.
Gravatar #75 - DrHouseDK
3. aug. 2009 02:56
Hjorten (6) skrev:
<offtopic>Har du en rackserver hjemme privat? Nu ved jeg ikke hvad du laver, men det lyder godt nok lidt vildt.</offtopic>


Jeg render også offtopic her, og sorry for that - men vi lige svare.

Blev tilbudt en ældre rackserver til en god pris, og så kunne jeg sgu ikke sige nej ;) Sådan en købte min kammerat og jeg så sammen, bare for at have noget legetøj. Nu står den så dér.........
Gravatar #76 - arne_v
9. aug. 2009 02:13
gnarfsan (66) skrev:
Dijkstra er en af de få personer, der er lige så kloge og intelligente, som de er arrogante.


Jeg må nok give dig ret.

Der er en en som lige har postet en stribe Dijkstra citater til comp.lang.java.programmer.

Udsnit:

If you want more effective programmers, you will discover that they should not waste their time debugging, they should not introduce the bugs to start with.


In the good old days physicists repeated each other’s experiments, just to be sure. Today they stick to FORTRAN, so that they can share each other's programs, bugs included.


It is not the task of the University to offer what society asks for, but to give what society needs.


It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.


The question of whether Machines Can Think… is about as relevant as the question of whether Submarines Can Swim.


Gravatar #77 - arne_v
9. aug. 2009 03:21
#goto

Min pointe er at jeg f.eks. synes at:


for(int i = 0; i < N; i++) {
for(int j = 0; j < M; j++) {
if(a[i][j] == MAGICK) {
Something(i, j);
goto done;
}
}
}
done:


er langt pænere end Java's labeled break:


outer:
for(int i = 0; i < N; i++) {
for(int j = 0; j < M; j++) {
if(a[i][j] == MAGICK) {
something(i, j);
break outer;
}
}
}


fordi goto konstruktionen er meget intuitiv.

Og diverse workarounds for at undgå goto falder heller ikke i min smag:


boolean done;
done = false;
for(int i = 0; i < N && !done; i++) {
for(int j = 0; j < M && !done; j++) {
if(a[i][j] == MAGICK) {
something(i, j);
done = true;
}
}
}


har nogle grumsede tests.


helper(a);
...
public void helper(int[][] a) {
for(int i = 0; i < N; i++) {
for(int j = 0; j < M; j++) {
if(a[i][j] == MAGICK) {
something(i, j);
return;
}
}
}
return;
}


et metode kald til en metode med to returns er ikke ligefrem læsevenligt.
Gravatar #78 - arne_v
9. aug. 2009 14:43
Men dog også lige et eksempel på at GOTO kan være slemt.

Da jeg ikke er god til Basic så bliver det Fortran:


INTEGER LBL
INTEGER*4 I
731 GOTO 113
ASSIGN 399 TO LBL
113 I=0
WRITE(*,*) I
247 ASSIGN 601 TO LBL
IF(I) 588,922,399
588 I=I+1
WRITE(*,*) I
GOTO 399
761 GOTO LBL
922 I=I+1
WRITE(*,*) I
GOTO(588,399,922) I
399 GOTO 761
601 CONTINUE
END
Gravatar #79 - arne_v
9. aug. 2009 18:53
#76

+

The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.
Gravatar #80 - mazing
10. aug. 2009 13:57
arne_v (77) skrev:
et metode kald til en metode med to returns er ikke ligefrem læsevenligt.

Godt du ikke læser min kode, så :) (Ikke at jeg ville gøre det i det her tilfælde, jeg ville nok bruge bool done metoden, plus at smide en break ind i MAGICK, for at spare sammenligningen i det indre loop)
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login