{"action":"created","comment":{"url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/comments/39596322","id":39596322,"diff_hunk":"@@ -17,7 +12,41 @@ For each quote, describe what it was about the quote that led you pick it.\n \n **Response**\n \n+> In a way, a language design of the old school is a pattern for programs. But now we\n+> need to “go meta.” We should now think of a language design as a pattern for language\n+> designs, a tool for making more tools of the same kind.  \n+> ... \n+>  \n+> My point is that a good programmer in these times does not just write programs.\n+> A good programmer builds a working vocabulary. In other words, a good programmer\n+> does language design, though not from scratch, but by building on the frame of a base\n+> language. [Steele, 1998]\n+\n+What I really like about this section is that it really addresses what it means to design a language, and how that should affect how we write code.  Very frequently when I talk to people about programming languages, or being interested in software development, most people simply assume that a programming language is voodoo and that software development is just lines and lines of that voodoo.  And while there are voodoo languages, and some people develop software like that, they're both doing it wrong.  \n+\n+In today's era of quickly shifting standards and models, where every year some hot new language or approach to design comes out, we need to be more flexible with how we use languages, and how and why we design new ones.  When we think of language design as a tool for making more tools, we greatly enhance our ability to use existing tools in new ways, because they were designed to be used in new ways.  This is what it really means, to me, to build a working vocabulary.  Like the author mentioned in the text, every language has some set of primitives, and in order to extend that language you must define things in terms of those primitives.  As you build your working vocabulary you're naturally extending the language, and developing new programs.\n+\n+As a side note, even though this class focuses on language design, you can also look at this quote from the other direction. That is, when you are just doing standard coding, you are still not free to ignore the problems that language design has. Ultimately, your code will be used by other people, and will be adapted and grown into doing things it was not originally intended to do. The code you write implicitly defines a mode of thought and a way to interface human ideas with the computer. In the same way that scientists still have to learn to write well and communicate their ideas, code has to be usable and extensible. So, studying language design may well also be useful when just \"coding\".\n \n+> If your standard is natural language, division/fraction notation isn't particularly intuitive.\n+> But to someone who knows the notation, ab / b is very intuitive, and it's immediately obvious that\n+> you can cancel the bs. So the goal of an intuitive programming syntax shouldn't be to emulate\n+> natural language, necessarily, but to provide intuitive hooks and syntax for the types of things\n+> that programmers do a lot. \n+> [Comment by \"Peter\" ([Source](https://www.fastcodesign.com/1665735/why-arent-computer-programming-languages-designed-better#comment-bc08f700-3c06-11e1-921b-9794fc737ae8))] [Pavlus, 2012]\n+\n+I feel that this comment on the Pavlus article really gets to the heart of the matter - that knowing the notation is part of any (technical) job, and once you can grok it, it becomes second nature.  So while natural language may make it easier to read and write code at first, when it comes down to it the most important thing is making sure that someone who uses it often (i.e. professionals and very passionate amateurs) can do what they need to do clearly and easily.","path":"language-design.md","position":36,"original_position":36,"commit_id":"31265623da30f1a12f3093ba2089d3cf1d1d994b","original_commit_id":"31265623da30f1a12f3093ba2089d3cf1d1d994b","user":{"login":"mjeongDSL","id":14045878,"avatar_url":"https://avatars.githubusercontent.com/u/14045878?v=3","gravatar_id":"","url":"https://api.github.com/users/mjeongDSL","html_url":"https://github.com/mjeongDSL","followers_url":"https://api.github.com/users/mjeongDSL/followers","following_url":"https://api.github.com/users/mjeongDSL/following{/other_user}","gists_url":"https://api.github.com/users/mjeongDSL/gists{/gist_id}","starred_url":"https://api.github.com/users/mjeongDSL/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mjeongDSL/subscriptions","organizations_url":"https://api.github.com/users/mjeongDSL/orgs","repos_url":"https://api.github.com/users/mjeongDSL/repos","events_url":"https://api.github.com/users/mjeongDSL/events{/privacy}","received_events_url":"https://api.github.com/users/mjeongDSL/received_events","type":"User","site_admin":false},"body":"Yes! My biggest gripe with the online article on co.Design is that programming itself is a domain that professionals will learn about.\r\nMany symbols in math are difficult to understand for the uninitiated, but people who use them find them to be better expressions than natural language.","created_at":"2015-09-16T06:04:32Z","updated_at":"2015-09-16T06:04:32Z","html_url":"https://github.com/hmc-cs111-fall2015/language-design/pull/4#discussion_r39596322","pull_request_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/4","_links":{"self":{"href":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/comments/39596322"},"html":{"href":"https://github.com/hmc-cs111-fall2015/language-design/pull/4#discussion_r39596322"},"pull_request":{"href":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/4"}}},"pull_request":{"url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/4","id":44892359,"html_url":"https://github.com/hmc-cs111-fall2015/language-design/pull/4","diff_url":"https://github.com/hmc-cs111-fall2015/language-design/pull/4.diff","patch_url":"https://github.com/hmc-cs111-fall2015/language-design/pull/4.patch","issue_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/issues/4","number":4,"state":"open","locked":false,"title":"Matt and Dan's Submission","user":{"login":"MatthewValentine","id":2508029,"avatar_url":"https://avatars.githubusercontent.com/u/2508029?v=3","gravatar_id":"","url":"https://api.github.com/users/MatthewValentine","html_url":"https://github.com/MatthewValentine","followers_url":"https://api.github.com/users/MatthewValentine/followers","following_url":"https://api.github.com/users/MatthewValentine/following{/other_user}","gists_url":"https://api.github.com/users/MatthewValentine/gists{/gist_id}","starred_url":"https://api.github.com/users/MatthewValentine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MatthewValentine/subscriptions","organizations_url":"https://api.github.com/users/MatthewValentine/orgs","repos_url":"https://api.github.com/users/MatthewValentine/repos","events_url":"https://api.github.com/users/MatthewValentine/events{/privacy}","received_events_url":"https://api.github.com/users/MatthewValentine/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-09-14T04:35:26Z","updated_at":"2015-09-16T06:04:32Z","closed_at":null,"merged_at":null,"merge_commit_sha":"96d4a2c6815b71a9e44028f36d502b0a504c1a78","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/4/commits","review_comments_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/4/comments","review_comment_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/comments{/number}","comments_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/issues/4/comments","statuses_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/statuses/31265623da30f1a12f3093ba2089d3cf1d1d994b","head":{"label":"MatthewValentine:master","ref":"master","sha":"31265623da30f1a12f3093ba2089d3cf1d1d994b","user":{"login":"MatthewValentine","id":2508029,"avatar_url":"https://avatars.githubusercontent.com/u/2508029?v=3","gravatar_id":"","url":"https://api.github.com/users/MatthewValentine","html_url":"https://github.com/MatthewValentine","followers_url":"https://api.github.com/users/MatthewValentine/followers","following_url":"https://api.github.com/users/MatthewValentine/following{/other_user}","gists_url":"https://api.github.com/users/MatthewValentine/gists{/gist_id}","starred_url":"https://api.github.com/users/MatthewValentine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MatthewValentine/subscriptions","organizations_url":"https://api.github.com/users/MatthewValentine/orgs","repos_url":"https://api.github.com/users/MatthewValentine/repos","events_url":"https://api.github.com/users/MatthewValentine/events{/privacy}","received_events_url":"https://api.github.com/users/MatthewValentine/received_events","type":"User","site_admin":false},"repo":{"id":42381519,"name":"language-design","full_name":"MatthewValentine/language-design","owner":{"login":"MatthewValentine","id":2508029,"avatar_url":"https://avatars.githubusercontent.com/u/2508029?v=3","gravatar_id":"","url":"https://api.github.com/users/MatthewValentine","html_url":"https://github.com/MatthewValentine","followers_url":"https://api.github.com/users/MatthewValentine/followers","following_url":"https://api.github.com/users/MatthewValentine/following{/other_user}","gists_url":"https://api.github.com/users/MatthewValentine/gists{/gist_id}","starred_url":"https://api.github.com/users/MatthewValentine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MatthewValentine/subscriptions","organizations_url":"https://api.github.com/users/MatthewValentine/orgs","repos_url":"https://api.github.com/users/MatthewValentine/repos","events_url":"https://api.github.com/users/MatthewValentine/events{/privacy}","received_events_url":"https://api.github.com/users/MatthewValentine/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/MatthewValentine/language-design","description":"","fork":true,"url":"https://api.github.com/repos/MatthewValentine/language-design","forks_url":"https://api.github.com/repos/MatthewValentine/language-design/forks","keys_url":"https://api.github.com/repos/MatthewValentine/language-design/keys{/key_id}","collaborators_url":"https://api.github.com/repos/MatthewValentine/language-design/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/MatthewValentine/language-design/teams","hooks_url":"https://api.github.com/repos/MatthewValentine/language-design/hooks","issue_events_url":"https://api.github.com/repos/MatthewValentine/language-design/issues/events{/number}","events_url":"https://api.github.com/repos/MatthewValentine/language-design/events","assignees_url":"https://api.github.com/repos/MatthewValentine/language-design/assignees{/user}","branches_url":"https://api.github.com/repos/MatthewValentine/language-design/branches{/branch}","tags_url":"https://api.github.com/repos/MatthewValentine/language-design/tags","blobs_url":"https://api.github.com/repos/MatthewValentine/language-design/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/MatthewValentine/language-design/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/MatthewValentine/language-design/git/refs{/sha}","trees_url":"https://api.github.com/repos/MatthewValentine/language-design/git/trees{/sha}","statuses_url":"https://api.github.com/repos/MatthewValentine/language-design/statuses/{sha}","languages_url":"https://api.github.com/repos/MatthewValentine/language-design/languages","stargazers_url":"https://api.github.com/repos/MatthewValentine/language-design/stargazers","contributors_url":"https://api.github.com/repos/MatthewValentine/language-design/contributors","subscribers_url":"https://api.github.com/repos/MatthewValentine/language-design/subscribers","subscription_url":"https://api.github.com/repos/MatthewValentine/language-design/subscription","commits_url":"https://api.github.com/repos/MatthewValentine/language-design/commits{/sha}","git_commits_url":"https://api.github.com/repos/MatthewValentine/language-design/git/commits{/sha}","comments_url":"https://api.github.com/repos/MatthewValentine/language-design/comments{/number}","issue_comment_url":"https://api.github.com/repos/MatthewValentine/language-design/issues/comments{/number}","contents_url":"https://api.github.com/repos/MatthewValentine/language-design/contents/{+path}","compare_url":"https://api.github.com/repos/MatthewValentine/language-design/compare/{base}...{head}","merges_url":"https://api.github.com/repos/MatthewValentine/language-design/merges","archive_url":"https://api.github.com/repos/MatthewValentine/language-design/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/MatthewValentine/language-design/downloads","issues_url":"https://api.github.com/repos/MatthewValentine/language-design/issues{/number}","pulls_url":"https://api.github.com/repos/MatthewValentine/language-design/pulls{/number}","milestones_url":"https://api.github.com/repos/MatthewValentine/language-design/milestones{/number}","notifications_url":"https://api.github.com/repos/MatthewValentine/language-design/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/MatthewValentine/language-design/labels{/name}","releases_url":"https://api.github.com/repos/MatthewValentine/language-design/releases{/id}","created_at":"2015-09-13T02:55:40Z","updated_at":"2015-09-10T00:37:04Z","pushed_at":"2015-09-14T04:33:36Z","git_url":"git://github.com/MatthewValentine/language-design.git","ssh_url":"git@github.com:MatthewValentine/language-design.git","clone_url":"https://github.com/MatthewValentine/language-design.git","svn_url":"https://github.com/MatthewValentine/language-design","homepage":null,"size":123,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"hmc-cs111-fall2015:master","ref":"master","sha":"4224a70776df313dc70c08c0b9e8b27d89a664e6","user":{"login":"hmc-cs111-fall2015","id":12563789,"avatar_url":"https://avatars.githubusercontent.com/u/12563789?v=3","gravatar_id":"","url":"https://api.github.com/users/hmc-cs111-fall2015","html_url":"https://github.com/hmc-cs111-fall2015","followers_url":"https://api.github.com/users/hmc-cs111-fall2015/followers","following_url":"https://api.github.com/users/hmc-cs111-fall2015/following{/other_user}","gists_url":"https://api.github.com/users/hmc-cs111-fall2015/gists{/gist_id}","starred_url":"https://api.github.com/users/hmc-cs111-fall2015/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hmc-cs111-fall2015/subscriptions","organizations_url":"https://api.github.com/users/hmc-cs111-fall2015/orgs","repos_url":"https://api.github.com/users/hmc-cs111-fall2015/repos","events_url":"https://api.github.com/users/hmc-cs111-fall2015/events{/privacy}","received_events_url":"https://api.github.com/users/hmc-cs111-fall2015/received_events","type":"Organization","site_admin":false},"repo":{"id":42158427,"name":"language-design","full_name":"hmc-cs111-fall2015/language-design","owner":{"login":"hmc-cs111-fall2015","id":12563789,"avatar_url":"https://avatars.githubusercontent.com/u/12563789?v=3","gravatar_id":"","url":"https://api.github.com/users/hmc-cs111-fall2015","html_url":"https://github.com/hmc-cs111-fall2015","followers_url":"https://api.github.com/users/hmc-cs111-fall2015/followers","following_url":"https://api.github.com/users/hmc-cs111-fall2015/following{/other_user}","gists_url":"https://api.github.com/users/hmc-cs111-fall2015/gists{/gist_id}","starred_url":"https://api.github.com/users/hmc-cs111-fall2015/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hmc-cs111-fall2015/subscriptions","organizations_url":"https://api.github.com/users/hmc-cs111-fall2015/orgs","repos_url":"https://api.github.com/users/hmc-cs111-fall2015/repos","events_url":"https://api.github.com/users/hmc-cs111-fall2015/events{/privacy}","received_events_url":"https://api.github.com/users/hmc-cs111-fall2015/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/hmc-cs111-fall2015/language-design","description":"","fork":false,"url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design","forks_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/forks","keys_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/teams","hooks_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/hooks","issue_events_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/issues/events{/number}","events_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/events","assignees_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/assignees{/user}","branches_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/branches{/branch}","tags_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/tags","blobs_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/git/refs{/sha}","trees_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/statuses/{sha}","languages_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/languages","stargazers_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/stargazers","contributors_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/contributors","subscribers_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/subscribers","subscription_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/subscription","commits_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/commits{/sha}","git_commits_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/git/commits{/sha}","comments_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/comments{/number}","issue_comment_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/issues/comments{/number}","contents_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/contents/{+path}","compare_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/merges","archive_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/downloads","issues_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/issues{/number}","pulls_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls{/number}","milestones_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/milestones{/number}","notifications_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/labels{/name}","releases_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/releases{/id}","created_at":"2015-09-09T05:41:09Z","updated_at":"2015-09-10T00:37:04Z","pushed_at":"2015-09-14T07:00:50Z","git_url":"git://github.com/hmc-cs111-fall2015/language-design.git","ssh_url":"git@github.com:hmc-cs111-fall2015/language-design.git","clone_url":"https://github.com/hmc-cs111-fall2015/language-design.git","svn_url":"https://github.com/hmc-cs111-fall2015/language-design","homepage":null,"size":534,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":7,"mirror_url":null,"open_issues_count":6,"forks":7,"open_issues":6,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/4"},"html":{"href":"https://github.com/hmc-cs111-fall2015/language-design/pull/4"},"issue":{"href":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/issues/4"},"comments":{"href":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/issues/4/comments"},"review_comments":{"href":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/4/comments"},"review_comment":{"href":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/4/commits"},"statuses":{"href":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/statuses/31265623da30f1a12f3093ba2089d3cf1d1d994b"}}}}