diff --git a/.gitignore b/.gitignore index 102e97d..5ff1b8e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ _site .sass-cache .jekyll-metadata -_tmp/ \ No newline at end of file +_tmp/ +*~ \ No newline at end of file diff --git a/_posts/2019-12-01-start-of-a-new-hobby.md b/_posts/2019-12-01-start-of-a-new-hobby.md new file mode 100644 index 0000000..a2da4c5 --- /dev/null +++ b/_posts/2019-12-01-start-of-a-new-hobby.md @@ -0,0 +1,50 @@ +--- +layout: post +title: "My new programming language" +date: 2019-11-25 +categories: Programming +tags: language +theme: dark +--- +As a software engineer, one of my joys in life is to learn new things. I can't describe the +joy of learning a new technology or steping forward in the world of science. If you experienced +such a joy, you'll know that how addictive it is. I can't satisfy my hunger for knowledge, +it might sounds like a brag but it's truly joyful (ok mate, you love to "read", get on with it). + +Programming languages are the most common tool among programmers and software engineers (Duh!). +I believe that learning new programming languages helps us to widen our vision as engineers and +help us improve our mentality about software architecture and design. So obviously I never say "No" +to learning a new programming language and because of that I have lots of experience with different +languages. Each language taught me tons of new things and helped me enhance my skills. I've studied +many languages and have a long list of them as my "To Learn" list. + +Almost a year ago, I was frustrated with Python and nagging to my wife about it (She always listens to +my gibberish). All of a sudden she said to me that "Why don't you write you own language ?". That made +me thinking, "Is it a good idea to do so ????". + +People have different routines for learning. I'm one of those people who likes to learn new +things by understanding how it works first. I'd like to start my learning process by understanding +the laws of the universe. In this case, "universe" being the implementation and theory behind +the thing I'm trying to learn. It might seems like crazy idea but that's how I learn better. +For example, when I was a teenager and was learning about how to use Gnu/Linux, I was so +obsessed with internal of a linux distribution to a degree that I decided to build my own +distribution. Of course as a teenager I was naive and dreamed about my distro ( Which I used +to call Liniera ) to become a well know and popular distribution. Aside from my childish dreams +I learned a lot by creating a distribution. Learned about linux kernel, boot process, bootloaders +and tons of other complicated pieces that normally people don't get to know at first (I was using +LFS and Debian tools). So after that delightful but tough experience, I always try to build a minimal +prototype of what ever I'm trying to learn in order to comprehend the universe of that thing which +helped me a lot to this day. + +Based on my history, routines and the question that my wife has planted in my mind and after about a year +researching and thinking about it, Finally I realized that it can be a good idea to create a new +programming language. To be honest it is not a task to be taken lightly. When ever I created some thing +that wasn't out of my needs, I just failed. But this time I thing creating a programming language can +massively help me to gain a better grasp of "the universe". Trying to overcome this challenge will help +me to grow and be a better engineer despite the fact that this new language may not even make it to the +list of known programming languages. I'm fine with that as long as it pushes me a step forward in my way +of life and brings me joy of wondering around in the wold of science and engineering. + +I'm going to write more blog posts about my journey through this humongous task as journal for myself and other +enthusiastic people. After all it will be a hobby of mine and not my day to day job. So I'll take my time and +move slowly but steady.