Lisp è la prima lingua ad adottare una programmazione strutturata?

5

Non sono riuscito a trovare link o libri che sostengano che il Lisp sia il primo linguaggio di programmazione ad adottare la programmazione strutturata (in realtà , la maggior parte di loro non menziona nemmeno il Lisp), ma se i condizionali sono stati inventati da McCarthy e sono entrati in Algol più tardi , è giusto dire che Lisp è il primo?

    
posta alice 15.02.2014 - 15:29
fonte

2 risposte

7
  • BTW, condizionali (e loop e GOTO) sono stati inventati da Ada Lovelace, 170 anni fa.
  • La programmazione strutturata è uno stile. Puoi strutturare il tuo codice Assembler. E puoi anche scrivere disordine non strutturato su qualsiasi lingua. Quindi non possiamo dire che qualsiasi linguaggio abbia adottato una programmazione strutturata. La domanda è errata.
  • Ma alcune lingue offrono migliori opportunità per un programmatore di codificare in modo strutturato. E poiché la richiesta principale della programmazione strutturata è una migliore leggibilità del codice, Lisp, sicuramente, è molto buono in questo senso.
  • Lisp è il secondo più antico linguaggio di programmazione di alto livello oggi ampiamente utilizzato ( wiki ). Realizzato nel 1958.
  • Il primo linguaggio di alto livello era Fortran (1957) e il suo codice non è ben letto, NON è buono per la strutturazione, ma per questi tempi, in confronto con Assembler, era MOLTO leggibile. E il suo codice può essere strutturato.
  • Altre lingue, prima di Lisp e Fortran, non erano affatto leggibili, o mai realizzate, o entrambe. RPG e COBOl sono apparsi solo nel 1959.
  • Ma non è corretto confrontare oggi Lisp con il vecchio Fortran. Il vecchio Lisp (vedi qui ) è ancora meno leggibile di Fortran. E nessuno lo chiamerebbe ora la lingua adatta alla programmazione strutturata.
  • D'altra parte, il Lisp usa la propria struttura, List, per organizzare il proprio codice, e in questo senso, il suo codice IS è strutturato. Ma non è nel senso di una programmazione strutturata come la prendiamo ora.

Quindi c'è un po 'di verità nella frase che stai chiedendo. Ma non posso dire che sia vero.

    
risposta data 15.02.2014 - 17:02
fonte
1

Ho svolto alcune ricerche sulla storia dei linguaggi di programmazione.

Ma prima, vediamo cosa dice Wikipedia su programmazione strutturata :

Structured programming is a programming paradigm aimed on improving the clarity, quality, and development time of a computer program by making extensive use of subroutines, block structures and for and while loops—in contrast to using simple tests and jumps such as the goto statement which could lead to "spaghetti code" which is both difficult to follow and to maintain.

E questo, naturalmente, include l'uso di funzioni ricorsive.

Da History of Lisp (scritto da McCarthy. Bold Enfasi mia):

  • As a programming language, LISP is characterized by the following ideas: ..., the recursive use of conditional expressions as a sufficient tool for building computable functions, ...

  • Towards the end of the initial period, it became clear that this combination of ideas made an elegant mathematical system as well as a practical programming language. Then mathematical neatness became a goal and led to pruning some features from the core of the language. This was partly motivated by esthetic reasons and partly by the belief that it would be easier to devise techniques for proving programs correct if the semantics were compact and without exceptions.

  • I invented conditional expressions in connection with a set of chess legal move routines I wrote in FORTRAN for the IBM 704 at M.I.T. during 1957-58. This program did not use list processing. The IF statement provided in FORTRAN 1 and FORTRAN 2 was very awkward to use, and it was natural to invent a function XIF(M,N1,N2) whose value was N1 or N2 according to whether the expression M was zero or not. The function shortened many programs and made them easier to understand, but it had to be used sparingly, because all three arguments had to be evaluated before XIF was entered, since XIF was called as an ordinary FORTRAN function though written in machine language. This led to the invention of the true conditional expression which evaluates only one of N1 and N2 according to whether M is true or false and to a desire for a programming language that would allow its use.

    A paper defining conditional expressions and proposing their use in Algol was sent to the Communications of the ACM but was arbitrarily demoted to a letter to the editor, because it was very short.

Da The Advent of Recursion & Logica in Informatica :

  • Since FORTRAN did not contain recursion either, he(McCarthy) tried to add it to the language, but without success.

  • In August 1959, McCarthy wrote a letter in which he openly advocated for recursive procedures [80], and, in January 1960, at the final ALGOL60 Paris conference, McCarthy suggested to add recursive procedures to the ALGOL60 language [116, p.30].

  • Perlis even stated in 1978 with respect to the ALGOL Effort that:

    "The implications of recursion were not really understood, except by McCarthy." [91, p.160]

Per riassumere, non solo aveva pensato che le funzioni ricorsive e le espressioni condizionali fossero sufficienti per costruire funzioni computabili, ma credevano anche che avrebbero portato a un codice leggibile e facile da verificare, e diffuso l'idea in altre lingue.

Pertanto, anche se McCarthy non ha detto goto è dannoso, penso che sia il primo a percepire l'importanza della programmazione strutturata e Lisp è la prima lingua che può essere definita linguaggio di programmazione strutturata. ( Fortran I non ha nemmeno supportato le subroutine o le espressioni nidificate e aveva solo un aritmetico se istruzione)

    
risposta data 22.02.2014 - 18:47
fonte

Leggi altre domande sui tag