Believe or not, programmers choose CPU or Memory when talking about the most important component in nowadays computer. However, software developers usually ignore how exactly it works. Instead, they buy a simple encapsulated interface since cs101. I am also not very interested in how DRAM/SRAM/PRAM/DDR/2/3 are exactly different in terms of silicon. Fortunately, since I was studying EE as my second major in my undergraduate, I am ‘very’ familiar with circuit, transistor, and silicon. This paper, (boot is better word) should be read by every young and senior programmers especially not interested in hardware. Every signle details of experiments on L1/L2/L3 Cache is the most valuable source ever. I personally make similar bench code to see how my really pc works (mac air). You have to look inside too!
Shortly, I am a fan of Lisp, Python, C and C++. That’s mostly because I already get used to these languages. However, I can speak many languages such as Java, Perl and finally Ruby. Speaking itself and fluency are totally different story. As we understand phrases and usages of real language, we also have to be familiar with the patterns of the languages. At least for me, library itself is one part of important aspects to understand these languages because essence of languages are naturally pervasive on the implementation of libraries. With this standpoint, it is hard to say Ruby is my language. However, the language design is the ideal language that most system hackers and application programmers dream of. I like it.
I recently installed Windows 7 on my Mac Air, which is the most restricted environment ever. Tomorrow, I am going to install Ubuntu 10 LTS, which I am looking forward to seeing this new version. While installing the apple hardware drivers on Windows 7, I saw a popup window saying “there are known compatibility issues on this program, want to see the solution?” Unfortunately, I hate these machine-like, useless recommendations from my dummy pc, but the one message, the “known” compatibility, tempt me to see the solution – I thought the apple didn’t consider Windows 7 that was not released when I bought this machine. Wow, I simply clicked the download link and installed them! seems to work like a charm!! nice touch
I am going to stay in Atlanta for 4 days (from today to next Monday). Fortunately, I got the partial financial support from Pycon (Python Conference) so I don’t have to spend much of fortune to get there. One of things that I want to understand and figure it out is what are the problems on cs educations or mindset of Korean computer scientists. I don’t know why .. there are more literally genius friends at KAIST than MIT as far as I feel except professors. Here, professors are such a greatest resources ever, inspiring, creative, nerdy, and real ‘live’ hackers. They are programming all the time – at least in my group! It is not mentioning that KAIST professors are not potent, rather not enthusiastic and don’t know how to motivate young hackers. For about hackers, it is born by nature so there are many hackers-to-be-born in every nations. The thing is how to stimulate and train them to be real hackers to improve our quality of life of the real world. Anyhow, I am going to Atlanta to see how geek or say nerdy hackers to think and develop! I hope it should be the greatest experience ever.
I have tried to learn Perl 5 times maybe since I was sophomore. I tried Perl just because perl seems to be the real geek’s language but python is just for the novice. Yes.. it was just might distorted thought when I was young. I tried so many books and articles ah! even perl 6, which is the worsted implementation ever. Did you see perl 6 performance and specification? adding 100 numbers took over one second.(otherwise, the design itself is much fancier than perl 5, but who is implementing?)
This time, I tried perl to substitute bash, sed, awk and others, but failed. I can’t find any forte except regular expression integrated statements. Python’s Regexp is terrible to write, long, dirty match & group, slow re module .. I just want to use // for my regexp. Other than regexp, I can’t find any advantages of perl at all, so I will never ever try to learn perl again. Instead, try to find other languages like D, C# or Java.
This is published by one of Korean hacker’s groups. I bought the first version of this book, which is pretty impressive to me and makes me happy on Korean hacker’s culture. This second book is quite disappointed in several points – first is which they are not talking about principles, but kiddy usages on tools, second is which editing and coding style are terrible. Rather than translating, which is time consuming, we need original idea of doing real hacking. However, this is only attempt to publish their works through book. We have to praise a bit for their intent. Good.
Frankly, I am a System Hacker, but I love GUI stuffs too. I am an ardent lover of wxWidget & wxPython, which are multi platform GUI framework. However, Win 32 API & MFC are considered not very bad. I have delved into these framework from the bottom, meaning right above the kernel interface. Even my main development environment is Ubuntu, GNOME desktop, I didn’t look inside of it yet! So during the holidays, I checked how GTK+ is constructed above X11 and how is it extensible to construct the GIMPS. My first impression on GTK+ is the best among all. It is really written in C but hard to say imperative C. It is definitely Object Oriented design, as C can do its best. Beautiful ever! (but I like much higher binding of C++ and Python, making me type less than GTK+)
I developed gtklookup-mode while writing gtk code for convenience.
One of my dreams during PhD is that I developed Lisp OS. I don’t know why exactly. After using Lisp, precisely scheme at first, my thinking on software design & algorithm was changed. I can not forget the moment that I understand ‘not imperative’ language. When using Lisp, I felt this language is suck ever not better than calculator as any other novice programmers, yes young students. All students are thinking Java is nice and C++ is suck, but C is umm sometimes better to write an algorithm to solve ICPC problems. No body think that Lisp is better suit to everything. Lisp is different in many aspects. First, you can design your own language. When writing a code with C++/Java, you might feel comfortable with libraries right? These are totally mangled codes of templates and retrospections & reflections. Lisp has much better way to deal with your source code as your data and data is your source code, too. Even Python that is one of my favorites doesn’t provide any features that I expected in Lisp. For example, let us assume we are writing unittest or debugging framework. Our c macro (preprocessor, cpp macro) helps a lot – such as __FUNCTION_NAME__, __LINE_NO__ , #, ##, … see boost preprocessors perfect isn’t it?
However, Lisp’s approach is much fancy and neat. Macro is not different code. It is tool to make our computers to write our code on behalf of us. Simply it is the way to control and command pc to work properly and fast.
As an one of intellectual pundits in computer science, I think that the Open Source is one of the most influential discoveries in 21st century. The reason why I mentioned discovery not invention is that it is exactly fit with human nature. The thing is thing, but anything else. These are the things that are intellectually valuable and beneficial to everyone when pervasive. Such as music, philosophy, math, and natural science, the software is not the thing we can seize and prevent them from being disclosed. To whole human beings, these activities definitely make them valuable, but for artists, philosophers, mathematicians and hackers, it should be more than just valuable. Since we are human beings, we can not live just with intellectual achievements. We also need love, food, family and surely money.
Is there any new model to satisfy all of these conditions
1. making our society valuable as a whole
2. making each individual satisfying as an individual in our society
3. making them feel respects and achievements
We are not volunteer!
Need much sophisticated model rather than FOSS..
We also like you, yes human beings.
Javascript is only the language that programmers use without learning it. In other words, the javascript language model is perfectly easy-to-use and reasonable to copy-and-paste. However as Douglas mentioned in this lecture, javascript also has fancy nice features derived from scheme & lisp. The closures help us hide unnecessary inside and disclose necessary interface between objects and functions. See the singleton example on the presentation.
During this winter, I am going to learn javascript from the syntax again. I love computer programming laguages itself, not just javascript alone. These are the lists of languages that I have to learn seriously D/Perl/Haskel/Ruby/Java/C#/.NET(CLR). Frankly, I am using Python mostly for my works and research – I don’t have any chance to be familiar with other languages even I read a couple of books on Haskel, Java and Ruby. I forgot the essence of them.
These are my native programming languages – gas, c, c++, python, lisp.