304 karma · joined October 4, 2011
Although I would say he didn’t get 100% there although that this point Ruby isn’t too far from that.
These are ideas that I think are worth trying to take even further. In fact, I’ve been experimenting with that.
I’m also sure you’re right that they’re not implemented using continuations. However, my understanding is that Ruby was originally conceived as a language with continuations. I’ll see if I can find a reference for that. But from what I recall reading in a blog post from someone who was at a programming language conference in 1997 when Matz introduced the language that’s how he described it.
The invovation is to have those features tied to convenient syntax.
One way to think of about it is this: anonymous functions as originally implemented in early Lisps are code as an object, closures are code with its lexical environment as an object. You can think of a Ruby block as code with its lexical environment and its call stack as an object.
So they don't just handle return differently than closures, they have access to the call stack of the site where they're created like a continuation. This is why they handle return differently, but this is just one of the things that falls out from that. It also comes with other control flow features like "redo", "retry", "next", "rescue", "finally", and others. These are all call stack control (control flow) conveniences, just like return is. All of them can be thought of as being abstractions built on top of continuations (just ask a Scheme hacker).
Originally Ruby was basically a Lisp without macros, but with continuations, a Smalltalk like object system and a lot of syntactic affordances inspired by Perl, and other languages. Blocks are one of the conveniences built on top of the Lispy semantics.
Note that I'm explaining how blocks work as an abstraction (vidarh below explains how they work as a concretion, as implemented in MRI).
However, in Ruby blocks aren't just about flexibility, more importantly they're about generality. They're not there to resolve an edge case at all (Ruby also has keywords for loops). They're a generalization of control flow that is just slightly less general than continuations. In practical use they provide an alterative to Lisp macros for many use cases.
These were some of the problems Matz was trying to sort out with his design of Ruby--creating a language that was fun and easy to use for day-to-day programming, with as much of the meta-programming power of Lisp and Smalltalk as possible. Blocks are one of his true innovatations that came from trying to balance that tension.
Software Engineer, Product Designer & Analyst able to help clients complete stalled projects, design & deliver user-friendly applications, and work through tough problems.
Looking for short term engagements
Résumé/CV: https://delonnewman.name/resume.pdf
Email: contact@delonnewman.name
Portfolio: https://delonnewman.name
Github: https://github.com/delonnewman
Highlights:
- Over 23 years of experience
- Over 9 years of experience in Healthcare
- Able to communicate effectively with technical and non-technical personnel
- Experienced tech lead, mentor & teacher
- Polyglot developer, specializing in Ruby & JavaScript
- Enjoy working with arcane data formats (e.g. EDI)
- System integration & automation
Location: Maine
Remote: Yes
Willing to relocate: No
Technologies:
Primary Languages: Ruby, JavaScript (TypeScript)
Databases: SQL (PostgreSQL, MySQL, MS SQL, Oracle), Datomic, Redis, MongoDB
Infrastructure: AWS, Docker, Linux SysAdmin
OS: Linux, macOS, iOS
Back-end: Rails, Sinatra, Node.js, Express
Front-end: Vanilla, HTMX, React, Svelte, ClojureScript
Other Languages: Clojure, Java, C, PHP, Perl, Bash, C#, Python, Swift, VBA
Résumé/CV: https://delonnewman.name/resume.pdf
Email: contact@delonnewman.name
Portfolio: https://delonnewman.name
Github: https://github.com/delonnewman
LinkedIn: https://www.linkedin.com/in/delonnewman
Software Engineer, Product Designer & Analyst able to help clients complete stalled projects,
design & deliver user-friendly applications, and work through tough problems.
- Over 23 years of experience
- Over 9 years of experience in Healthcare
- Experienced tech lead, mentor & teacher
- Polyglot developer
- Enjoys working with arcane data formats (e.g. EDI)
- System architecture & design
- Looking for part-time or short term engagementsSoftware Engineer, Product Designer & Analyst able to help clients complete stalled projects, design & deliver user-friendly applications, and work through tough problems.
Looking for part-time & short term engagements
Résumé/CV: https://delonnewman.name/history
Email: contact@delonnewman.name
Portfolio: https://delonnewman.name
Github: https://github.com/delonnewman
Highlights:
- Over 23 years of experience
- Over 9 years of experience in Healthcare
- Able to communicate effectively with technical and non-technical personnel
- Experienced tech lead, mentor & teacher
- Polyglot developer, specializing in Ruby & JavaScript
- Enjoy working with arcane data formats (e.g. EDI)
- System integration & automation
Location: Maine
Remote: Yes
Willing to relocate: No
Technologies:
Primary Languages: Ruby, JavaScript (TypeScript)
Databases: SQL (PostgreSQL, MySQL, MS SQL, Oracle), Datomic, Redis, MongoDB
Infrastructure: AWS, Docker, Linux SysAdmin
OS: Linux, macOS, iOS
Back-end: Rails, Sinatra, Node.js, Express
Front-end: Vanilla, HTMX, React, Svelte, ClojureScript
Other Languages: Clojure, Java, C, PHP, Perl, Bash, C#, Python, Swift, VBA
Résumé/CV: https://delonnewman.name/history
Email: contact@delonnewman.name
Portfolio: https://delonnewman.name
Github: https://github.com/delonnewman
LinkedIn: https://www.linkedin.com/in/delonnewman
Software Engineer, Product Designer & Analyst able to help clients complete stalled projects,
design & deliver user-friendly applications, and work through tough problems.
- Over 23 years of experience
- Over 9 years of experience in Healthcare
- Experienced tech lead, mentor & teacher
- Polyglot developer
- Enjoys working with arcane data formats (e.g. EDI)
- System architecture & design
- Looking for part-time or short term engagements Location: New Mexico
Remote: Yes, preferably or hybrid in Northern Maine
Willing to relocate: Yes, Northern Maine
Technologies:
Primary Languages: Ruby, JavaScript
Databases: SQL (PostgreSQL, MySQL, MS SQL, Oracle), Datomic, Redis, MongoDB
Infrastructure: AWS, Docker, Linux SysAdmin
OS: Linux, macOS, iOS
Back-end: Rails, Sinatra, Node.js
Front-end: Vanilla JS, HTMX, React, ClojureScript
Other Languages: TypeScript, Clojure, Java, C, Python, Swift, Perl, Bash, PHP, C#, VBA
Résumé/CV: https://delonnewman.name/resume.pdf
Email: contact@delonnewman.name
Portfolio: https://delonnewman.name
Github: https://github.com/delonnewman
LinkedIn: https://www.linkedin.com/in/delonnewman
Software Engineer, Product Designer & Analyst who’s able to help clients complete stalled projects,
design & deliver user-friendly applications, and work through tough problems.
- Over 23 years of experience
- Over 9 years of experience in Healthcare
- Able to communicate effectively with technical and non-technical personnel
- Experienced tech lead, mentor & teacher
- Polyglot developer
- Enjoys working with arcane data formats (e.g. EDI)
- System architecture & design Location: New Mexico
Remote: Yes, preferably or hybrid in Northern Maine
Willing to relocate: Yes, Northern Maine
Technologies:
Primary Languages: Ruby, JavaScript
Databases: SQL (PostgreSQL, MySQL, MS SQL, Oracle), Datomic, Redis, MongoDB
Infrastructure: AWS, Docker, Linux SysAdmin
OS: Linux, macOS, iOS
Back-end: Rails, Sinatra, Node.js
Front-end: Vanilla JS, HTMX, React, ClojureScript
Other Languages: TypeScript, Clojure, Java, C, Python, Swift, Perl, Bash, PHP, C#, VBA
Résumé/CV: https://delonnewman.name/resume.pdf
Email: contact@delonnewman.name
Portfolio: https://delonnewman.name
Github: https://github.com/delonnewman
LinkedIn: https://www.linkedin.com/in/delonnewman
Software Engineer, Product Designer & Analyst who’s able to help clients complete stalled projects,
design & deliver user-friendly applications, and work through tough problems.
- Over 23 years of experience
- Over 9 years of experience in Healthcare
- Able to communicate effectively with technical and non-technical personnel
- Experienced tech lead, mentor & teacher
- Polyglot developer
- Enjoys working with arcane data formats (e.g. EDI)
- System architecture & design
- Gaining experience with NLP & MLSeasoned Software Engineer & Systems Analyst able to help clients complete stalled projects, design & deliver user-friendly applications, and work through tough data-oriented problems.
Looking for part-time (preferably less than 20 hours) or short term (3 months or less) engagements
Résumé/CV: https://delonnewman.name/resume
Email: contact@delonnewman.name
Portfolio: https://delonnewman.name
Github: https://github.com/delonnewman
Highlights:
- Over 23 years of experience
- Over 9 years of experience in Healthcare
- Able to communicate effectively with technical and non-technical personnel
- Experienced tech lead, mentor & teacher
- Polyglot developer, specializing in Ruby & JavaScript
- Enjoy working with arcane data formats (e.g. EDI)
- System integration & automation
Location: New Mexico
Remote: Yes
Willing to relocate: No
Technologies:
Primary Languages: Ruby, JavaScript
Databases: SQL (PostgreSQL, MySQL), Datomic, Redis, MongoDB
Infrastructure: AWS, Docker, Linux SysAdmin
OS: Linux, macOS, iOS
Back-end: Rails, Sinatra, Node.js
Front-end: Vanilla JS, React, ClojureScript, SASS, Google Closure
Other Languages: TypeScript, Clojure, C, Java, Python, Swift, Perl, Bash, PHP, C#, VBA
Résumé/CV: https://delonnewman.name/resume (HTML & PDF)
Email: contact@delonnewman.name
Portfolio: https://delonnewman.name
Github: https://github.com/delonnewman
Seasoned Software Engineer & Systems Analyst able to help clients complete stalled projects, design
& deliver user-friendly data-oriented applications, and work through tough data-oriented problems.
Looking for part-time (preferably less than 20 hours) or short term (3 months or less) engagements
- Over 23 years of experience
- Over 9 years of experience in Healthcare
- Able to communicate effectively with technical and non-technical personnel
- Experienced tech lead, mentor & teacher
- Polyglot developer
- Enjoys working with arcane data formats (e.g. EDI)
- System architecture & design Location: New Mexico
Remote: Yes
Willing to relocate: No
Technologies:
Primary Languages: Ruby, JavaScript
Databases: SQL (PostgreSQL, MySQL), Datomic, Redis, MongoDB
Infrastructure: AWS, Docker, Linux SysAdmin
OS: Linux, macOS, iOS
Back-end: Rails, Sinatra, Node.js
Front-end: Vanilla JS, React, ClojureScript, SASS, Google Closure
Other Languages: TypeScript, Clojure, C, Java, Python, Swift, Perl, Bash, PHP, C#, VBA
Résumé/CV: https://delonnewman.name/resume (HTML & PDF)
Email: contact@delonnewman.name
Portfolio: https://delonnewman.name
Github: https://github.com/delonnewman
Seasoned Software Engineer & Systems Analyst able to help clients complete stalled projects, design
& deliver user-friendly data-oriented applications, and work through tough data-oriented problems.
Looking for part-time (preferably less than 20 hours) or short term (3 months or less) engagements
- Over 23 years of experience
- Over 9 years of experience in Healthcare
- Able to communicate effectively with technical and non-technical personnel
- Experienced tech lead, mentor & teacher
- Polyglot developer
- Enjoys working with arcane data formats (e.g. EDI)
- System architecture & designSeasoned Software Engineer & Systems Analyst able to help clients complete stalled projects, design & deliver user-friendly applications, and work through tough data-oriented problems.
Looking for part-time (preferably less than 20 hours) or short term (3 months or less) engagements
Résumé/CV: https://delonnewman.name/resume
Email: contact@delonnewman.name
Portfolio: https://delonnewman.name
Github: https://github.com/delonnewman
Highlights:
- Over 23 years of experience
- Over 9 years of experience in Healthcare
- Able to communicate effectively with technical and non-technical personnel
- Experienced tech lead, mentor & teacher
- Polyglot developer, specializing in Ruby & JavaScript
- Enjoy working with arcane data formats (e.g. EDI)
- System integration & automation
Seasoned Software Engineer & Systems Analyst able to help clients complete stalled projects, design & deliver user-friendly applications, and work through tough data-oriented problems.
Looking for part-time (preferably less than 20 hours) or short term (3 months or less) engagements
Résumé/CV: https://delonnewman.name/resume (HTML & PDF)
Email: contact@delonnewman.name
Portfolio: https://delonnewman.name
Github: https://github.com/delonnewman
Highlights:
- Over 23 years of experience
- Over 9 years of experience in Healthcare
- Able to communicate effectively with technical and non-technical personnel
- Experienced tech lead, mentor & teacher
- Able to design & build user-friendly data-oriented applications
- Polyglot developer specializing in Ruby, Rails & JavaScript
- Enjoy working with arcane data formats (e.g. EDI)
- System architecture & design
Location: New Mexico
Remote: Yes
Willing to relocate: No
Technologies:
Primary Languages: Ruby, JavaScript
Databases: SQL (PostgreSQL, MySQL), Datomic, Redis, MongoDB
Infrastructure: AWS, Docker, Linux SysAdmin
OS: Linux, macOS, iOS
Back-end: Rails, Sinatra, Node.js
Front-end: Vanilla JS, React, ClojureScript, SASS, Google Closure
Other Languages: TypeScript, Clojure, C, Java, Python, Swift, Perl, Bash, PHP, C#, VBA
Résumé/CV: https://delonnewman.name/resume (HTML & PDF)
Email: contact@delonnewman.name
Portfolio: https://delonnewman.name
Github: https://github.com/delonnewman
Seasoned Software Engineer & Systems Analyst able to help clients complete stalled projects, design
& deliver user-friendly data-oriented applications, and work through tough data-oriented problems.
Looking for part-time (preferably less than 20 hours) or short term (3 months or less) engagements
- Over 23 years of experience
- Over 9 years of experience in Healthcare
- Able to communicate effectively with technical and non-technical personnel
- Experienced tech lead, mentor & teacher
- Polyglot developer
- Enjoys working with arcane data formats (e.g. EDI)
- System architecture & designSeasoned Software Engineer & Systems Analyst able to help clients complete stalled projects, design user-friendly applications, and work through tough data-oriented problems.
Looking for part-time (preferably less than 20 hours) or short term (3 months or less) engagements
Portfolio: https://delonnewman.name
Résumé/CV: https://delonnewman.name/resume (HTML & PDF)
Email: contact@delonnewman.name
Highlights:
- Over 23 years of experience
- Over 9 years of experience in Healthcare
- Able to communicate effectively with technical and non-technical personnel
- Can help you reason through tough problems
- Experienced tech lead, mentor & teacher
- Able to design & build user-friendly data-oriented applications
- Polyglot developer
- Enjoy working with arcane data formats (e.g. EDI)
- System integration & automation
- Experienced working with Ruby, JavaScript and Java/JVM ecosystems
- System architecture & design
Location: New Mexico
Remote: Yes
Willing to relocate: No
Technologies:
Primary Languages: Ruby, JavaScript/TypeScript, Clojure
Databases: SQL (PostgreSQL, MySQL), Datomic, Redis, MongoDB
Infrastructure: AWS, Docker, Linux SysAdmin
OS: Linux, macOS, iOS
Back-end: Rails, Sinatra, Node.js
Front-end: Vanilla JS, React, ClojureScript, SASS, Google Closure
Other Languages: C, Java, Python, Swift, Perl, Bash, PHP, C#, VBA
Résumé/CV: https://delonnewman.name/resume (HTML & PDF)
Email: contact@delonnewman.name
Portfolio: https://delonnewman.name
Github: https://github.com/delonnewman
Seasoned Software Engineer & Systems Analyst able to help clients complete stalled projects,
design user-friendly applications, and work through tough data-oriented problems.
Looking for part-time (preferably less than 20 hours) or short term (3 months or less) engagements
- Over 23 years of experience
- Over 9 years of experience in Healthcare
- Able to communicate effectively with technical and non-technical personnel
- Can help you reason through tough problems
- Experienced tech lead, mentor & teacher
- Polyglot developer
- Enjoy working with arcane data formats (e.g. EDI)
- Able to design and build user-friendly data-oriented applications
- System integration & automation
- System architecture & designhttps://ruby-doc.org/3.2.2/Object.html
https://ruby-doc.org/3.2.2/Method.html
https://ruby-doc.org/3.2.2/Class.html
Location: New Mexico
Remote: Yes
Willing to relocate: No
Technologies:
Primary Languages: Ruby, JavaScript, Clojure
Databases: SQL (PostgreSQL, MySQL, SQL Server, Oracle, MS Access), Datomic, Redis, MongoDB
Infrastructure: AWS, Docker, Linux SysAdmin
OS: Linux (Debian, Ubuntu, Redhat, Fedora), macOS, iOS
Back-end: Rails, Sinatra, Node.js
Front-end: Vanilla JS, React, ClojureScript, SASS, Google Closure
Other Languages: TypeScript, C, Java, Python, Swift, Perl, Bash, PHP, C#, VBA, C++, ColdFusion, Scheme, Common Lisp
Interested in gaining experience with any of the following:
- Data Science, ML, NLP applications
- Compilers, Interpreters, Query Engines
Résumé/CV: https://delonnewman.name/resume.pdf
Email: contact@delonnewman.name
Portfolio: https://delonnewman.name
Github: https://github.com/delonnewman
Looking for part-time (preferably 10 - 30 hours)
- Over 23 years of experience
- Polyglot developer
- Enjoy working with arcane data formats (e.g. EDI)
- Build user-friendly data-oriented applications
- System integration & automation
- System architecture & design
- Experienced tech lead, mentor & teacher