Stories
Slash Boxes
Comments

SoylentNews is people

posted by Fnord666 on Monday November 19 2018, @07:42AM   Printer-friendly
from the who-watches-the-watchers dept.

Submitted via IRC for Bytram

We Need an FDA For Algorithms

In the introduction to her new book, Hannah Fry points out something interesting about the phrase "Hello World." It's never been quite clear, she says, whether the phrase—which is frequently the entire output of a student's first computer program—is supposed to be attributed to the program, awakening for the first time, or to the programmer, announcing their triumphant first creation.

Perhaps for this reason, "Hello World" calls to mind a dialogue between human and machine, one which has never been more relevant than it is today. Her book, called Hello World, published in September, walks us through a rapidly computerizing world. Fry is both optimistic and excited—along with her Ph.D. students at the University of College, London, she has worked on many algorithms herself—and cautious. In conversation and in her book, she issues a call to arms: We need to make algorithms transparent, regulated, and forgiving of the flawed creatures that converse with them.

I reached her by telephone while she was on a book tour in New York City.


Original Submission

 
This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 3, Interesting) by DannyB on Monday November 19 2018, @05:16PM (4 children)

    by DannyB (5839) Subscriber Badge on Monday November 19 2018, @05:16PM (#763925) Journal

    Having written commercial software almost four decades, I find that even for boring business and accounting software the things I learned in CS did and still do matter to this very day. It is important to understand algorithms if you want efficient and correct code.

    Examples: I shouldn't use this algorithm because it is just wrong for this application or will have a huge performance impact. I should use that algorithm for that other application because it would be more efficient as well as correct. Always consider correctness before efficiency.

    Trivial optimization can happen as you code. (But should not be affecting big design decisions to avoid premature optimization.) An example of trivial optimization is should I use an ArrayList or a LinkedList. Both of these implement the List interface. But they have different performance behavior for different operations. The choice doesn't affect system design, but can impact behavior in a meaningful way. If you're having a performance issue, you profile and optimize.

    I would say that Java (and probably C#) programmers would both say we have safe languages with both data structure templates, as well as algorithm templates built in. Because these implement standard interfaces, high quality third party implementations of algorithms and data structures are also available. (Example: Google Guava, and others)

    The government should definitely stay out of programming. (Since I usually only speak sarcasm, I recognize yours instantly.) The government is not needed in programming. Leave it to private enterprise to screw things up without government help. They are already much better at it than the government is.

    --
    If your boy is chewing on electrical cords, then ground him until he conducts himself properly.
    Starting Score:    1  point
    Moderation   +1  
       Interesting=1, Total=1
    Extra 'Interesting' Modifier   0  
    Karma-Bonus Modifier   +1  

    Total Score:   3  
  • (Score: 3, Interesting) by DutchUncle on Monday November 19 2018, @05:59PM (3 children)

    by DutchUncle (5370) on Monday November 19 2018, @05:59PM (#763948)

    >>>> Examples: I shouldn't use this algorithm because it is just wrong for this application or will have a huge performance impact.

    Having written embedded systems firmware for four decades, I find that most embedded work is done by EEs, and I was the only CS person they had ever met, and they had never learned any of the (what I thought were) basic techniques, AND DIDN'T CARE. Software was the "easy" part. Of course, nobody (least of all me) would have assumed that I as a CS grad should be designing circuitry for 480-volt power systems, but the EEs who were doing that design were assumed to be able to "throw together" the control program for the microprocessor controlling it, and incidentally doing communications on three lines in three different protocols. And while they might have gotten the timing charts right for the hardware, they didn't recognize when coding approaches left them vulnerable to race conditions in the software.

    So a finding that "nobody cares about algorithms" would be accurate; a lot of the people doing programming never studied the background of the field and throw code together till it appears to do what they want, on the limited test set of data that they try. (We can discuss testing for error recognition at length another time.)

    • (Score: 2) by DannyB on Monday November 19 2018, @07:17PM

      by DannyB (5839) Subscriber Badge on Monday November 19 2018, @07:17PM (#763973) Journal

      That's a different world than I live in, but I hear what you're saying.

      --
      If your boy is chewing on electrical cords, then ground him until he conducts himself properly.
    • (Score: 2) by suburbanitemediocrity on Tuesday November 20 2018, @02:49AM

      by suburbanitemediocrity (6844) on Tuesday November 20 2018, @02:49AM (#764121)

      I used to write code for high power supplies and things rarely got more complicated than

      for( ; ; ) {
              setpoint = read_voltage( );
              DAC_out = k * ( ADC_vin - setpoint ); // the important part
              update_display( );
              wait_timer( );
      }

      And yes I've had to do linked lists, searches and a whole host of other CS data structures, but these aren't difficult to pick up in a few minutes of reading example code. Not for power supplies, but larger plant and process control.

    • (Score: 2) by legont on Tuesday November 20 2018, @03:27AM

      by legont (4179) on Tuesday November 20 2018, @03:27AM (#764131)

      I wonder what happens if the device blows and kills a few people in the process. In older world, say civil engineering, the engineer would certify a bridge and go to prison if it falls down with victims. Do we have "bridge designs" with significant software and who takes the responsibility?

      --
      "Wealth is the relentless enemy of understanding" - John Kenneth Galbraith.