Skip to content
HomeVideosBooks
AllTopicsTrends
BlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    Cover of A method of programming

    A method of programming

    Edsger Wybe Dijkstra, W. H. J. Feijen · 1988

    An introduction to computer programming motivated by successively transforming mathematical characterizations of program state.

    Programming
    Open LibraryAmazon
    Stats for nerds
    2recommend
    4mentions
    2people
    2015–2023years
    100% recommend

    Mentions per year

    201520162017201820192020202120222023

    What Hacker News says

    1. rramadassAug 2023
      I am glad you found it useful; your appreciation is much appreciated :-)

      The point of my post was that studying Dijkstra is essential even if we cannot follow his methods to the letter. The key is to improve our own thinking and adopt better and more productive work-habits.

      You might also want to checkout Dijkstra's A Method of Programming and Wirth's Systematic Programming: An Introduction.

      thread
    2. rramadassSep 2022
      You must surely then get his (with Feijen) book A Method of Programming. It is designed for classroom use targeted at a "introductory programming curriculum".
      thread
    3. rramadassJul 2021
      >Anyone that wants to learn more on the subject of deriving programs should read

      Two more;

      * EWD316 - A Short Introduction to the Art of Programming.

      * A Method of Programming - Book co-authored with W.H.J.Feijen. For some reason, this is not well known though it was written as a course textbook. Draft version here: https://www.softwareresearch.net/fileadmin/src/docs/teaching...

      thread
    4. jonjackyJul 2015
      If you can get past Dijkstra's arrogance and abrasive presentation, he actually has some useful things to teach.

      If you look at one of the books where he and his colleagues teach how to do this (for example, A Method of Programming, by Dijkstra and Fiejen) it's pretty clear that the programmer him(her)self is supposed to come up with the formal specification. Much of the book is about how to write the specifications.

      The formal specifications are just assertions - they are Boolean expressions that express properties of the solution. For example the formal specification for a square root function might be abs(r*r - x) < d, where x is the number, r is the root, and d is an error tolerance.

      In general these formal specifications cannot be mechanically compiled into an executable program - they are nonconstructive - like the square root example above. So you still have to find or invent an algorithm.

      An interesting feature of Dijkstra's method is, he does suggest some heuristics for getting from the assertions to the code, that can help you discover an algorithm. They remove the mystery surrounding how some non-obvious algorithms were discovered.

      Dijkstra's approach is actually a lot like test-driven development - the idea is, you start with some assertions that describe what the code is supposed to do, then you check the assertions as you go -- instead of writing a bunch of code and checking it at the end. The difference is just how you check the assertions - by running tests or by attempting a proof. Test cases are formal specifications too - they are just incomplete - somebody said they are 'specification by example'.

      thread

    Related

    Cover of A discipline of programming
    2009–2025

    A discipline of programming

    Edsger Wybe Dijkstra
    16 recommend · 51
    Cover of Program development in Java
    2010–2026

    Program development in Java

    B. Liskov
    3 recommend · 9
    Cover of Low-Level Programming
    2019–2026

    Low-Level Programming

    Igor Zhirkov
    3 recommend · 8
    Cover of Object-oriented programming
    2010–2026

    Object-oriented programming

    Peter Coad
    3 recommend · 5
    Art of Writing Efficient ProgramsFedor G. Pikus
    2022–2026

    Art of Writing Efficient Programs

    Fedor G. Pikus
    2 recommend · 4
    Cover of Compiler construction for digital computers
    2015–2026

    Compiler construction for digital computers

    David Gries
    1 recommend · 7
    Cover of Advanced programming language design
    2015–2026

    Advanced programming language design

    Raphael A. Finkel
    2 recommend · 7
    Cover of Formal syntax and semantics of programming languages
    2019–2025

    Formal syntax and semantics of programming languages

    Kenneth Slonneger
    2 recommend · 5