[HN Gopher] Computer Science Logo Style: Programming Language Im...
___________________________________________________________________
Computer Science Logo Style: Programming Language Implementation
(1997)
Author : buescher
Score : 53 points
Date : 2021-06-04 15:15 UTC (7 hours ago)
(HTM) web link (people.eecs.berkeley.edu)
(TXT) w3m dump (people.eecs.berkeley.edu)
| jgalt212 wrote:
| Logo really should be brought back for pedagogical purposes in
| primary school.
|
| Scratch programming, the one I've had the most direct experience
| with, is IMHO is just too much dumbing down of the topic.
| empressplay wrote:
| We're working on it :) We see ourselves as positioned between
| Scratch and Python https://turtlespaces.org
| jecel wrote:
| Here us a pretty good attempt to extend Scratch to have all the
| functionality of Logo:
|
| https://snap.berkeley.edu/
|
| Some things are a bit awkward visually to me, but they have
| experience using this to teach real programming to people.
| DonHopkins wrote:
| Snap! is not simply all the usability and functionality of
| Logo, but also all the functionality and power of Scheme!
| Without any of the dumbing down of Scratch or Logo. Visual
| block programming. Turtle Graphics. Sprites. Lexical scoping.
| Lambda. Closures. Call/cc. Plus JavaScript integration and
| web stuff. With extensions for networking, AI, machine
| learning, speech synthesis and recognition, graph theory,
| robotics, Lego, Arduino, 3d graphics, 3d design, 3d
| fabrication, and 3d printing, embroidery, etc. ;)
|
| https://dl.acm.org/doi/pdf/10.1145/3386329
|
| History of Logo. Proc. ACM Program. Lang., Vol. 4, No. HOPL,
| Article 79. Publication date: June 2020.
|
| 6.2 Brian Harvey's Personal Narrative on Snap!: Scheme
| Disguised as Scratch (pp. 49-50)
|
| In 2009, the University of California, Berkeley, was one of
| several universities developing a new kind of introductory
| computer science course, meant for non-CS majors, to include
| aspects of the social implications of computing along with
| the programming content. Scratch wasn't quite expressive
| enough to support such a course (it lacked the ability to
| write recursive functions), so Prof. Daniel Garcia and I
| thought "What's the smallest change we could make to Scratch
| to make it usable in our course?" After 20 years teaching
| Structure and Interpretation of Computer Programs [Abelson et
| al. 1984], the best computer science text ever written, I
| knew that the answer to "what's the smallest change" is
| generally "add lambda." I joined forces with German
| programmer Jens Monig, who had developed BYOB (Build Your Own
| Blocks), an extension to Scratch with custom (user-defined)
| blocks, including reporters and predicates. At that time we
| were hoping to convince the Scratch Team to adopt our ideas,
| so we took "smallest change" very seriously. BYOB 3.0 [Harvey
| and Monig 2010], with first class procedures and first class
| lists, added only eight blocks to Scratch's palette. (The
| code is almost all Jens's. My contribution was part of the
| user interface design, plus teaching Jens about lambda.)
| Version 3.1 added first class sprites with Object Logo-style
| inheritance. The Berkeley course, The Beauty and Joy of
| Computing (BJC) [Garcia et al. 2012], is also used by
| hundreds of high schools, especially since the College Board
| endorsed it as a curriculum for their new AP CS Principles
| exam. Unfortunately, some teachers have no sense of humor,
| and so BYOB version 4.0, a complete rewrite in JavaScript,
| was renamed Snap! [Harvey 2019]. [18]
|
| Since Scratch seemed to be positioned as the successor to
| Logo, it was a goal for Snap! to restore the features from
| Logo that are missing in Scratch. The most important missing
| feature, the ability to define functions (and therefore to
| use recursive functions), is at the core of the new language.
| (Scratch introduced user-definable command blocks in version
| 2.0, but still doesn't support user defined reporters.)
| Scratch had also replaced the structured text (word and
| sentence) functions with a flat text string data type. We
| wanted to be backward compatible with Scratch, so we
| implemented words and sentences as a library, defining first,
| last, butfirst, and so on. (Since block languages allow
| multi-word procedure names, and you don't have to type the
| long name in order to use the procedure, the library names
| are, e.g., all but first letter of.)
|
| Lists are first class and can be arbitrarily deep in
| sublists. The usual higher order functions on lists are
| provided; the graphical representation of lambda is built
| into the blocks representing higher order functions, and so
| beginning users can use higher order functions in simple
| cases without thinking hard about function-as-data at all,
| but the full power of lambda is available to more advanced
| programmers. It took us three tries to get the lambda design
| right, but we're very proud of its pedagogic benefits.
|
| Another of our goals for Snap! is to be a complete version of
| Scheme; it was largely as a way of planting that flag that we
| added call with current continuation, not taught in BJC (nor
| even in SICP) but used to implement tools such as catch and
| throw as library procedures written in Snap! itself. As of
| this writing, macros are only half-implemented; users can
| define procedures whose inputs are unevaluated (more
| precisely, thunked, since procedures are first class), but
| cannot yet inject code into the caller's environment.
|
| Snap! is lexically scoped, not least to allow the use of
| closures as objects, but a planned extension is "hybrid
| scope": variable names follow lexical scope, but instead of
| giving an error message when no binding is found in the
| lexical environment, the evaluator will instead look in the
| dynamic environment. So name capture is impossible, since the
| global environment is examined before the dynamic
| environment. (Only if a mistyped name matches another name
| can the user get the wrong variable rather than an error
| message. But mistyping can't really happen in a block
| language.) This, too, is an effort to be a Logo as well as a
| Scheme.
|
| Since Snap! is free software (AGPL), it has served as the
| starting point for at least a dozen significant extensions,
| including BeetleBlocks [Koschitz and Rosenbaum 2012;
| Rosenbaum et al. 2011] for 3-D graphics and 3-D printing;
| TurtleStitch [Mayr-Stalder and Aschauer 2016] for controlling
| sewing machines to do embroidery; Edgy [Bird et al. 2013] for
| studying graph theory; NetsBlox [Ledeczi and Broll 2016] for
| access to online data APIs and collaborative editing of
| projects; and others. The ability to write new Snap! blocks
| in Javascript, from the Snap! editor, has allowed many other
| user-level extension libraries, including support for robots
| and other hardware. Snap! features such as first class
| procedures help authors develop these extensions, even if the
| users of an extension don't see that.
|
| [18] For non-Anglophones, "BYOB" is used in party invitations
| as an abbreviation for "bring your own booze."
| bobochan wrote:
| Agreed. My kids learned MicroWorlds Logo in elementary school
| from LCSI (Logo Computer Systems Inc). They definitely enjoyed
| the experience and it served a good preparation for learning
| other languages as they got older.
| bmitc wrote:
| Based on a recent thread on Logo, I went on a Logo book searching
| binge. I found this book series by Brian Harvey, and they indeed
| look interesting. Right now, I am awaiting delivery of _Exploring
| Language with Logo_ , which I am really excited about. I
| admittedly don't plan on using Logo but instead will use either
| F# or Racket to go through the book. It seems there were a lot of
| neat exploration books published with Logo. I wish this style of
| book was more en vogue today.
| buescher wrote:
| If it's the same thread I'm thinking of, after reading it I
| wanted to show folks that Logo is a programming language, not a
| turtle graphics system.
| kjander79 wrote:
| Definitely, and Brian Harvey's books go a long way to showing
| just that: Logo is a full fledged language with wonderful
| pedagogical value, as well as a neat tool for easy
| exploratory programming, possibly better than more modern
| options like Python that suck all the air out of the room
| right now.
| buescher wrote:
| I've always thought Logo syntax was not just easy but
| outright elegant. There could be a parallel universe where
| it continued to evolve into the de-facto-standard-
| scripting-language role Python has now.
| RodgerTheGreat wrote:
| REBOL's syntax is in some ways very similar to Logo;
| perhaps we may yet see successful descendants in our own
| universe.
| leke wrote:
| REBOL was one of the first languages I learned. Some
| parts were super powerful and easy, but I remember
| struggling with some parts of the language. I can't
| remember what those parts were now.
|
| Of all these compile to JS languages we see currently,
| it's a shame REBOL is not one of them. I might be tempted
| to pick it up again.
| bmitc wrote:
| Maybe I should give Logo a try then when the book
| arrives.
| bmitc wrote:
| Probably the same thread or threads. There was a couple posts
| that all hit the front page in the past week or two on the
| same day. I actually still have Brian Harvey's full book
| series you posted in my Amazon cart.
|
| Here's an interesting article that discusses the language
| book.
|
| https://citejournal.org/volume-20/issue-3-20/seminal-
| article...
| buescher wrote:
| Thanks - I enjoyed that. I'm tempted to track down my own
| copy of the language book.
| bmitc wrote:
| No problem! And thank you for this post! Maybe I should
| go ahead and hit purchase on Harvey's Logo book series
| now.
|
| There's also another book called _Visual Modeling with
| Logo: A Structured Approach to Seeing_ that I 've ordered
| that looks very interesting as well. I was drawn in by
| the description:
|
| *****
|
| > Filled with striking illustrations, this book offers an
| exciting exploration of Logo graphics for designers,
| architects, liberal arts students, and other individuals
| who are interested in creative applications of computers.
|
| > Visual Modeling with Logo introduces the programming
| concepts necessary for describing and manipulating some
| of the basic visual structures in the world around us.
| Logo is a language that encourages visual problem-solving
| and helps us expand our understanding of how we see.
|
| > The book provides a wide range of exercises for
| investigating the many dimensions and component parts of
| seeing; it proceeds from the simple to the complex, using
| representative models based on circular grids,
| rectangular grids, Islamic designs, organic forms, and
| different spatial systems.
|
| *****
|
| There's a few others books in a similar vain that I've
| found too: _Learning Mathematics and Logo_ ,
| _Investigations in Algebra: An Approach to Using Logo_ ,
| and _Exploring Logo without a Computer_. Then of course
| there 's _Turtle Geometry: The Computer as a Medium for
| Exploring Mathematics_.
|
| I'm a big fan of books that use programming to _explore_
| other topics, and it seems Logo generated a lot of books
| like this. It 's my own lofty dream to write my own
| series like these.
| reaperducer wrote:
| I'm one of those people who still remembers Logo as the turtle
| graphics introduction to computers for children thing.
|
| Are there large, commercial applications running on Logo these
| days, or is it a hobby language? Can you provide a brief
| summary of the status of Logo today?
| RodgerTheGreat wrote:
| NetLogo is moderately popular today. I've seen it used in
| academic contexts for modeling cellular automata and agent-
| based simulations: https://ccl.northwestern.edu/netlogo/
| empressplay wrote:
| It's still used in education to some extent, you can get a
| sense through logofoundation.org
|
| The two big players (LCSI and Terrapin) still maintain
| versions of Logo (Terrapin Logo and Lynx)
|
| I co-develop a 3D Logo variant at https://turtlespaces.org
| buescher wrote:
| No, and no (I don't know of any Logo hobbyists), and I have
| no idea what people use in its original domain these days.
| kjander79 wrote:
| I don't think there is much drive to teach programming to
| younger kids, but iirc Kahn Academy focuses on Javascript.
| DonHopkins wrote:
| Brian Harvey's books are excellent!
|
| Definitely check out Brian Harvey's and Jens Monig's latest
| masterpiece: Snap!, a block based visual programming language
| with the full power of Scheme, but ease of use of Scratch and
| Logo, written in JavaScript and tightly integrated with web
| browser technologies and libraries (including Ken Kahn's
| eCraftToLearn AI Programming for Kids extension using
| Tensorflow).
|
| Snap:
|
| https://snap.berkeley.edu/
|
| AI For Kids with Snap!:
|
| https://ecraft2learn.github.io/ai/
|
| Snap! 6 is here, and it's all about scale (HN discussion of
| Snap! 6 announcement):
|
| https://news.ycombinator.com/item?id=24781716
|
| Brian and Jens earned the NTLS Educational Leadership Award for
| their work on Snap!:
|
| https://ntls.info/ntls-educational-leadership-award/brian-ha...
|
| >The National Technology Leadership Summit (NTLS) Educational
| Technology Leadership Award recognizes individuals who made a
| significant impact on the field of educational technology over
| the course of a lifetime. The NTLS consortium is a coalition of
| twelve national teacher education associations that collaborate
| to advance effective use of technology in schools. The NTLS
| Educational Technology Leadership Award is the coalition's
| highest honor.
|
| >Brian Harvey and Jens Moenig, working together, have had an
| impact on the field of educational technology that is as
| significant as any other. The origins of their work dates to
| development of the first computing language explicitly designed
| for children. In 1966 Seymour Papert, Wallace Feurzeig, Daniel
| Bobrow, and Cynthia Solomon created the programming language
| Logo. Logo, whose name is drawn from the Greek word for word,
| is both a technology and an educational philosophy. Its
| inception also resulted in the development of an educational
| community that exists to this day.
|
| >Brian Harvey had the opportunity to learn from Lisp inventor
| John McCarthy and Scheme inventors Gerald Sussman and Guy
| Steele, among others, as a student at the MIT and Stanford
| Artificial Intelligence Labs. Throughout the 1970s he was a
| frequent visitor at the MIT Logo Group, and starting in 1981 he
| was part of design teams for microcomputer versions of Logo for
| the Apple II, the Atari 800, and the Apple Macintosh. A high
| point of his career was establishing the Computer Department at
| the Lincoln-Sudbury Regional High School, in Massachusetts,
| offering ungraded courses that attracted a community of kids
| with keys to the lab and the responsibility for making the
| facility meet everyone's needs.
|
| >In the 1980s he wrote the three-volume Computer Science Logo
| Style, published by MIT Press. These books showed that Logo
| could be used beyond elementary school to introduce serious
| computer science ideas to a broad and diverse audience. He
| subsequently taught at the University of California, Berkeley,
| where he was recognized with the Distinguished Teaching Award,
| the university's most prestigious award for teaching. He was
| lead developer of Berkeley Logo, which because of its status as
| free software has become a de facto standard for Logo
| implementations. Since 2013 he has been Teaching Professor
| Emeritus.
|
| >On a parallel track, Jens Moenig collaborated with Alan Kay,
| inventor of Smalltalk, and worked with colleagues from the
| Xerox Palo Alto Research Center (PARC) who invented personal
| computing. He subsequently contributed to development of the
| block programming language Scratch, one of the languages
| influenced by Logo.
|
| >Brian Harvey and Jens Moenig then embarked upon one of the
| most productive collaborations in the history of educational
| computing, jointly developing the block programming language
| Snap! The Snap! reference manual notes, "The brilliant design
| of Scratch, from the Lifelong Kindergarten Group at the MIT
| Media Lab, is crucial to Snap!."
|
| >Snap! makes advanced computational concepts accessible to
| nonprogrammers. Brian Harvey notes, "Languages in the Logo
| family, including Scratch and Snap!, take the position that
| we're not in the business of training professional computer
| programmers. Our mission is to bring programming to the
| masses." The Beauty and Joy of Computing, tightly integrated
| with Snap!, does just that. This curriculum, developed at the
| University of California at Berkeley, is notable for attracting
| equal numbers of male and female students.
|
| >The course is approved for Advanced Placement credit by the
| College Board. With support from the National Science
| Foundation, professional development has been provided to more
| than one thousand high school computer science teachers. One
| computer science teacher who introduced the curriculum in his
| high school reported that, "Before using Snap! and the Beauty
| and Joy of Computing curriculum, I had one section of computer
| science with 17 students. Three of the students were girls. Now
| I have three full sections of the course with equal numbers of
| male and female students."
|
| >Snap!, provided as free, open source software, has inspired
| development of many extensions. Among others, these include
| environments such as Snap4Arduino, which supports work with
| microcontrollers and robotics; mathematics microworlds for
| elementary children developed by Paul Goldenberg and his
| colleagues at the Educational Development Corporation; and
| iSnap, an extension developed by Thomas Price which suggests
| hints to students based on the work of other students. Another
| extension, TuneScope, designed to facilitate exploration of
| coding through music, is being developed by a collaborative
| team at the Society for Information Technology and Teacher
| Education (SITE).
|
| >Snap! is a remarkable technological achievement. However, like
| Logo, its greatest achievement is arguably the educational
| philosophy that it draws upon and supports, and the associated
| community drawn together by this philosophy. In a very real
| sense, the Snap! community embodies the spirit of the early
| Logo community, extending it for the modern world. The NTLS
| Educational Technology Leadership Award, awarded to Brian
| Harvey and Jens Moenig, is presented in recognition of that
| accomplishment.
| bobochan wrote:
| I knew this was going to be about Brian Harvey as soon as I saw
| the title. He was a wonderful presence on comp.lang.logo years
| ago and would even help struggling noobs with their Scheme
| questions on occasion. He is a very clear writer and his
| dedication to teaching is inspiring.
| sprior wrote:
| When I saw the headline I had to check to make sure this wasn't
| the USCD p-system coming back.
| dang wrote:
| The submitted title was "A virtual machine and Pascal compiler
| in Berkeley LOGO" but that was a little misleading so we
| changed it to the book+chapter title.
___________________________________________________________________
(page generated 2021-06-04 23:02 UTC)