{"action":"created","comment":{"url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/comments/39582797","id":39582797,"diff_hunk":"@@ -74,7 +212,17 @@ implementation choices from users?\n \n **Response**\n \n+Implementation choices change how user expressions are interpreted. Implementation choices can change how verbose or concise expressions in the language are. In this way, the feel of the language can be changed through the designer's choices. Good implementation choices give users intuitive results, a natural language feel, and an intuitive and sensible understanding of how the programming language realizes the user's ideas. We believe that good implementation choices will also lead to an interface that suggests what the implementation is to the user without the user needing to refer to documentation. (This is the notion that the language should read like documentation.) We do not believe that implementation choices should be hiden from the users. The documentation for a langauge should include implementation choices to enable users to make effective programing decisions. However, users should be able to comfortably program without detailed knowledege of the implementation. From our experiences, programming languages seem to imply their implementation details through their grammar, or syntax, so we do not believe that it is always possible to hide out implementation choices from users. Language designers should show the implementation choices so that users can use the language most effectively. Knowledgeable users can then provide feedback to the designer to help the language become the best that it can.","path":"language-design.md","position":184,"original_position":184,"commit_id":"c7a1eb500e65392174041cdf1fe3b898cc5da71a","original_commit_id":"c7a1eb500e65392174041cdf1fe3b898cc5da71a","user":{"login":"Dannnno","id":6121935,"avatar_url":"https://avatars.githubusercontent.com/u/6121935?v=3","gravatar_id":"","url":"https://api.github.com/users/Dannnno","html_url":"https://github.com/Dannnno","followers_url":"https://api.github.com/users/Dannnno/followers","following_url":"https://api.github.com/users/Dannnno/following{/other_user}","gists_url":"https://api.github.com/users/Dannnno/gists{/gist_id}","starred_url":"https://api.github.com/users/Dannnno/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Dannnno/subscriptions","organizations_url":"https://api.github.com/users/Dannnno/orgs","repos_url":"https://api.github.com/users/Dannnno/repos","events_url":"https://api.github.com/users/Dannnno/events{/privacy}","received_events_url":"https://api.github.com/users/Dannnno/received_events","type":"User","site_admin":false},"body":"I disagree, to some extent, with \r\n\r\n> programming languages seem to imply their implementation details through their grammar, or syntax\r\n\r\nSuppose you have the following loop:\r\n\r\n```\r\nfor item in collection:\r\n    print item\r\n```\r\n\r\nI would argue that there are at least three straightforward ways to implement an interpreter or compiler that executes this code - recursion, looping, and actually figuring out every element in the collection and printing it a la\r\n\r\n```\r\nprint collection__item1\r\nprint collection__item2\r\n...\r\n```\r\n\r\nJust looking at this code doesn't tell you how the underlying implementation handles this, or even that it will always handle a for loop the same way.","created_at":"2015-09-16T00:29:04Z","updated_at":"2015-09-16T00:29:04Z","html_url":"https://github.com/hmc-cs111-fall2015/language-design/pull/1#discussion_r39582797","pull_request_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/1","_links":{"self":{"href":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/comments/39582797"},"html":{"href":"https://github.com/hmc-cs111-fall2015/language-design/pull/1#discussion_r39582797"},"pull_request":{"href":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/1"}}},"pull_request":{"url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/1","id":44883714,"html_url":"https://github.com/hmc-cs111-fall2015/language-design/pull/1","diff_url":"https://github.com/hmc-cs111-fall2015/language-design/pull/1.diff","patch_url":"https://github.com/hmc-cs111-fall2015/language-design/pull/1.patch","issue_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/issues/1","number":1,"state":"open","locked":false,"title":"Justis Allen/Men Cheol Jeong Submission","user":{"login":"JustisAllen","id":6563083,"avatar_url":"https://avatars.githubusercontent.com/u/6563083?v=3","gravatar_id":"","url":"https://api.github.com/users/JustisAllen","html_url":"https://github.com/JustisAllen","followers_url":"https://api.github.com/users/JustisAllen/followers","following_url":"https://api.github.com/users/JustisAllen/following{/other_user}","gists_url":"https://api.github.com/users/JustisAllen/gists{/gist_id}","starred_url":"https://api.github.com/users/JustisAllen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JustisAllen/subscriptions","organizations_url":"https://api.github.com/users/JustisAllen/orgs","repos_url":"https://api.github.com/users/JustisAllen/repos","events_url":"https://api.github.com/users/JustisAllen/events{/privacy}","received_events_url":"https://api.github.com/users/JustisAllen/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-09-13T23:44:10Z","updated_at":"2015-09-16T00:29:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b78df8b52c88bbc7bf93bbd5b9568bc981ff3c76","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/1/commits","review_comments_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/1/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/1/comments","statuses_url":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/statuses/c7a1eb500e65392174041cdf1fe3b898cc5da71a","head":{"label":"JustisAllen:master","ref":"master","sha":"c7a1eb500e65392174041cdf1fe3b898cc5da71a","user":{"login":"JustisAllen","id":6563083,"avatar_url":"https://avatars.githubusercontent.com/u/6563083?v=3","gravatar_id":"","url":"https://api.github.com/users/JustisAllen","html_url":"https://github.com/JustisAllen","followers_url":"https://api.github.com/users/JustisAllen/followers","following_url":"https://api.github.com/users/JustisAllen/following{/other_user}","gists_url":"https://api.github.com/users/JustisAllen/gists{/gist_id}","starred_url":"https://api.github.com/users/JustisAllen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JustisAllen/subscriptions","organizations_url":"https://api.github.com/users/JustisAllen/orgs","repos_url":"https://api.github.com/users/JustisAllen/repos","events_url":"https://api.github.com/users/JustisAllen/events{/privacy}","received_events_url":"https://api.github.com/users/JustisAllen/received_events","type":"User","site_admin":false},"repo":{"id":42412893,"name":"language-design","full_name":"JustisAllen/language-design","owner":{"login":"JustisAllen","id":6563083,"avatar_url":"https://avatars.githubusercontent.com/u/6563083?v=3","gravatar_id":"","url":"https://api.github.com/users/JustisAllen","html_url":"https://github.com/JustisAllen","followers_url":"https://api.github.com/users/JustisAllen/followers","following_url":"https://api.github.com/users/JustisAllen/following{/other_user}","gists_url":"https://api.github.com/users/JustisAllen/gists{/gist_id}","starred_url":"https://api.github.com/users/JustisAllen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JustisAllen/subscriptions","organizations_url":"https://api.github.com/users/JustisAllen/orgs","repos_url":"https://api.github.com/users/JustisAllen/repos","events_url":"https://api.github.com/users/JustisAllen/events{/privacy}","received_events_url":"https://api.github.com/users/JustisAllen/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/JustisAllen/language-design","description":"","fork":true,"url":"https://api.github.com/repos/JustisAllen/language-design","forks_url":"https://api.github.com/repos/JustisAllen/language-design/forks","keys_url":"https://api.github.com/repos/JustisAllen/language-design/keys{/key_id}","collaborators_url":"https://api.github.com/repos/JustisAllen/language-design/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/JustisAllen/language-design/teams","hooks_url":"https://api.github.com/repos/JustisAllen/language-design/hooks","issue_events_url":"https://api.github.com/repos/JustisAllen/language-design/issues/events{/number}","events_url":"https://api.github.com/repos/JustisAllen/language-design/events","assignees_url":"https://api.github.com/repos/JustisAllen/language-design/assignees{/user}","branches_url":"https://api.github.com/repos/JustisAllen/language-design/branches{/branch}","tags_url":"https://api.github.com/repos/JustisAllen/language-design/tags","blobs_url":"https://api.github.com/repos/JustisAllen/language-design/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/JustisAllen/language-design/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/JustisAllen/language-design/git/refs{/sha}","trees_url":"https://api.github.com/repos/JustisAllen/language-design/git/trees{/sha}","statuses_url":"https://api.github.com/repos/JustisAllen/language-design/statuses/{sha}","languages_url":"https://api.github.com/repos/JustisAllen/language-design/languages","stargazers_url":"https://api.github.com/repos/JustisAllen/language-design/stargazers","contributors_url":"https://api.github.com/repos/JustisAllen/language-design/contributors","subscribers_url":"https://api.github.com/repos/JustisAllen/language-design/subscribers","subscription_url":"https://api.github.com/repos/JustisAllen/language-design/subscription","commits_url":"https://api.github.com/repos/JustisAllen/language-design/commits{/sha}","git_commits_url":"https://api.github.com/repos/JustisAllen/language-design/git/commits{/sha}","comments_url":"https://api.github.com/repos/JustisAllen/language-design/comments{/number}","issue_comment_url":"https://api.github.com/repos/JustisAllen/language-design/issues/comments{/number}","contents_url":"https://api.github.com/repos/JustisAllen/language-design/contents/{+path}","compare_url":"https://api.github.com/repos/JustisAllen/language-design/compare/{base}...{head}","merges_url":"https://api.github.com/repos/JustisAllen/language-design/merges","archive_url":"https://api.github.com/repos/JustisAllen/language-design/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/JustisAllen/language-design/downloads","issues_url":"https://api.github.com/repos/JustisAllen/language-design/issues{/number}","pulls_url":"https://api.github.com/repos/JustisAllen/language-design/pulls{/number}","milestones_url":"https://api.github.com/repos/JustisAllen/language-design/milestones{/number}","notifications_url":"https://api.github.com/repos/JustisAllen/language-design/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/JustisAllen/language-design/labels{/name}","releases_url":"https://api.github.com/repos/JustisAllen/language-design/releases{/id}","created_at":"2015-09-13T21:04:51Z","updated_at":"2015-09-10T00:37:04Z","pushed_at":"2015-09-14T07:00:50Z","git_url":"git://github.com/JustisAllen/language-design.git","ssh_url":"git@github.com:JustisAllen/language-design.git","clone_url":"https://github.com/JustisAllen/language-design.git","svn_url":"https://github.com/JustisAllen/language-design","homepage":null,"size":97,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"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/1"},"html":{"href":"https://github.com/hmc-cs111-fall2015/language-design/pull/1"},"issue":{"href":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/issues/1"},"comments":{"href":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/pulls/1/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/1/commits"},"statuses":{"href":"https://api.github.com/repos/hmc-cs111-fall2015/language-design/statuses/c7a1eb500e65392174041cdf1fe3b898cc5da71a"}}}}