{"id":449,"date":"2007-07-24T23:20:20","date_gmt":"2007-07-25T06:20:20","guid":{"rendered":"http:\/\/multimedia.cx\/eggs\/language-scavenger-hunt\/"},"modified":"2007-07-24T23:27:56","modified_gmt":"2007-07-25T06:27:56","slug":"language-scavenger-hunt","status":"publish","type":"post","link":"https:\/\/multimedia.cx\/eggs\/language-scavenger-hunt\/","title":{"rendered":"Language Scavenger Hunt"},"content":{"rendered":"<p>So many fun programming languages out there, and more emerging all the time. But who has time to learn them all? I certainly don&#8217;t, but I still want to learn. One issue I have is that I don&#8217;t learn that well by reading through a language reference or a tutorial. I learn best by doing, and when it comes to learning a new language, I learn best when I have a specific task I am trying to accomplish. To that end, I was thinking that it would nice to have a list of essential, yet simple, programming exercises, preferably ones that are suited for higher level languages. These would give me concrete goals to research whilst attempting to learn a new language. Further, I would build up a small repository of sample programs to which I could refer later. When I need to write something in Perl, my chief method of refreshing my skill is to look back on similar code I wrote as many as 10 years ago.<\/p>\n<p>I did a cursory Google search for something along these lines, but came up empty-handed. It may be necessary to start assembling a list of my own. This would include items like:<\/p>\n<ul>\n<li>Reading a file, line by line, and processing each line through a regular expression; or perhaps a more complicated, less sed-style textual processing application<\/li>\n<li>Opening a socket to a web server and fetching a web page; perhaps screen-scrape something useful off of the fetched data<\/li>\n<li>Write a simple web server (and consider carefully the security implications of what you produce)<\/li>\n<li>If the language has a graphics API (e.g., through something like <a href=\"http:\/\/www.boutell.com\/gd\/\">gd<\/a> or <a href=\"http:\/\/libsdl.org\/\">SDL<\/a>), create a canvas, draw some dots, lines, shapes, load a font and write some text, load an image and blt it; decode a video in real-time using <a href=\"http:\/\/ffmpeg.org\/\">FFmpeg<\/a><\/li>\n<li>If the language has an API for accessing your favorite database, use it to connect to the db server, SELECT, INSERT, UPDATE, DELETE, etc.; understand how the API can organize query data into the language&#8217;s native data structures (e.g., Perl&#8217;s DBI can fetch the results into a hash array which is extremely useful and intuitive)<\/li>\n<\/ul>\n<p>These are just a few ideas off the top of my head. Another important aspect would be specific exercises targeted at understanding the language&#8217;s native data structures since those tend to be a key selling point of many very high level languages.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>So many fun programming languages out there, and more emerging all the time. But who has time to learn them all? I certainly don&#8217;t, but I still want to learn. One issue I have is that I don&#8217;t learn that well by reading through a language reference or a tutorial. I learn best by doing, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[28],"tags":[],"class_list":["post-449","post","type-post","status-publish","format-standard","hentry","category-programming"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/449","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/comments?post=449"}],"version-history":[{"count":0,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/449\/revisions"}],"wp:attachment":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/media?parent=449"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/categories?post=449"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/tags?post=449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}