{"action":"created","issue":{"url":"https://api.github.com/repos/raganwald/raganwald.github.com/issues/45","labels_url":"https://api.github.com/repos/raganwald/raganwald.github.com/issues/45/labels{/name}","comments_url":"https://api.github.com/repos/raganwald/raganwald.github.com/issues/45/comments","events_url":"https://api.github.com/repos/raganwald/raganwald.github.com/issues/45/events","html_url":"https://github.com/raganwald/raganwald.github.com/issues/45","id":81142112,"number":45,"title":"OOP, JavaScript, and so-called Classes","user":{"login":"allenwb","id":505435,"avatar_url":"https://avatars.githubusercontent.com/u/505435?v=3","gravatar_id":"","url":"https://api.github.com/users/allenwb","html_url":"https://github.com/allenwb","followers_url":"https://api.github.com/users/allenwb/followers","following_url":"https://api.github.com/users/allenwb/following{/other_user}","gists_url":"https://api.github.com/users/allenwb/gists{/gist_id}","starred_url":"https://api.github.com/users/allenwb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/allenwb/subscriptions","organizations_url":"https://api.github.com/users/allenwb/orgs","repos_url":"https://api.github.com/users/allenwb/repos","events_url":"https://api.github.com/users/allenwb/events{/privacy}","received_events_url":"https://api.github.com/users/allenwb/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-05-26T21:23:59Z","updated_at":"2015-05-26T22:55:10Z","closed_at":null,"body":"This generally looks pretty good.  Ihave just a couple thoughts:\r\n\r\nMight be worth mentioning that some languages (but not Snmalltalk, Ruby, JS, CL, etc.) treat class as nominal types.\r\n\r\nclasses: In Smalltalk and Ruby classes aren't just first class \"entities\" they are first class objects.\r\n\r\nprototypes are not classes:\r\n1) but the \"Treaty of Orlando\" concluded that they have equivalent power\r\n2) in self, at least, prototypes are frequently used to build class-like program organization structures.  See http://bibliography.selflanguage.org/organizing-programs.html and http://bibliography.selflanguage.org/parents-shared-parts.html .  this has also been found to be common in JS\r\n\r\nobject-orient programming can mean almost anything: I think it does have a single core meaning (at least to classic OOP programmer): structuring programs in terms of the protocols of sets of communicating entities (objects)\r\n\r\nthe JavaScript approach:  I'll argue that ES6 classes are as \"first class\" as the classes of Smalltalk or Ruby. The fisrt class valued of an ES6 class definition is simply a constructor function so an ES^ \"class\" is nothing more than a first class function object that follows a particular structural pattern that relates it to a prototype object, its \"superclass\", and its instances.\r\n"},"comment":{"url":"https://api.github.com/repos/raganwald/raganwald.github.com/issues/comments/105691517","html_url":"https://github.com/raganwald/raganwald.github.com/issues/45#issuecomment-105691517","issue_url":"https://api.github.com/repos/raganwald/raganwald.github.com/issues/45","id":105691517,"user":{"login":"allenwb","id":505435,"avatar_url":"https://avatars.githubusercontent.com/u/505435?v=3","gravatar_id":"","url":"https://api.github.com/users/allenwb","html_url":"https://github.com/allenwb","followers_url":"https://api.github.com/users/allenwb/followers","following_url":"https://api.github.com/users/allenwb/following{/other_user}","gists_url":"https://api.github.com/users/allenwb/gists{/gist_id}","starred_url":"https://api.github.com/users/allenwb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/allenwb/subscriptions","organizations_url":"https://api.github.com/users/allenwb/orgs","repos_url":"https://api.github.com/users/allenwb/repos","events_url":"https://api.github.com/users/allenwb/events{/privacy}","received_events_url":"https://api.github.com/users/allenwb/received_events","type":"User","site_admin":false},"created_at":"2015-05-26T22:55:10Z","updated_at":"2015-05-26T22:55:10Z","body":"@igalic I don't claim to be the first, but I  *have* been thinking about this stuff for  about 35 years :-)\r\nI even considered linking to Williams work, but was too lazy to track down the links. So thanks.\r\n\r\nI'll also probably get flack if I don't recommend: http://wirfs-brock.com/DesignBooks.html if you want to understand what OOP is really about.\r\n\r\n"}}