A Modern Systems Programming language

March 28, 2012 at 10:50 am | Posted in Hacking, Programming | Leave a comment

With more effort in the direction of finding a modern systems programming language I had email communications with several people including Eli Gottlieb, creator of decac programming language, GNU Hurd community and ATS language community. It was Eli Gottlieb who gave me the idea that unless I am doing a hobby project I should talk to Hurd people about my ideas and I am glad I did and as you have seen my letter to Hurd community already in my previous post, to find the replies, check out march 2012 archives of bug-hurd mailing list or go here

Seems like Hurd guys either did not like my idea or are nto intersted in it at all, hence I decided to not do any further debate. ATS community has given some replies here, else you can chekc out March 2012 mailing list archives from their site http://www.ats-lang.org

Eli has advised me to go through osdev.org and learn something about OS programming before I venture into writing a microkernel myself. Hongwei from ATS advised to first write a microkernel and then later see how ATS ecnodes to those principles. Wise advice and I am gonna follow. I don’t think I wil start HurdNG development anytime soon, in fact its gonna be quite late. I also need to to how decac was designed and what does it offer, then check out ATS too. While in the meantime I am checking other high level langauges like Haskell and what they offer and comparing the design-ideas to decac, ATS, C and C++ in return. Going to be a lot of work. We have quite high-level and very good programming langauges available at our disposal e.g Common Lisp, Haskell Caml etc. and good modern scripting languages and are available too (Squirrel is one of them, angel-code scripting library is another major step) but not much of mature modern systems programming languages.

 


Copyright © 2012 Arnuld Uttre, Village – Patti, P.O – Manakpur, Tehsil – Nangal, Distt. – Ropar, Punjab (INDIA)

Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.

Advertisements

Must Reads – 1

March 23, 2012 at 4:59 pm | Posted in Hacking, Programming | Leave a comment

I started learning programming in year 2005. After I quit my sales job in February of 2005, I purchased Red Hat Linux Bible in end of April same year. It has been 5 years since then, I learned a lot about computers and it became my passion since then, all possible because of GNU, different Newsgroups, mailing lists, forums and all the helpful people in this virtually real world. I have read many articles and books and essays and history of UNIX, Linux, GNU, BSD, Debian, and many other organizations and groups. Based on my experience I am providing here a list of articles that every computer science student, every programmer must read if he wants to truly understand what he is doing. In fact, every person who buys softwares must read some fo them to open up his mind, same way he knows about his motorcycle like what is spark plug and where it is, what air to keep in tires, if you own a car then how to learn to safely drive a car, how much useful those air-bags are, how to overtake (never to overtake from left e.g.), when is its really essentially to honk, not to talk on mobile phone while driving etc. That way no one wil be able to fool him around while buying softwares. May be after reading them a general computer user will walk on a path and come to know that Truth is really far more stranger than fiction. Ideal process would be o just read these links and google for extra depending on if you want to do computer programming or if you are not a programmer and you need something specific or just out of curiosity:

I guess in 1996 I tried to learn English from a book which you can find on every corner of India and it boasts to teach you English in 30 days. I tried and failed several times. Then in my graducation I tried to learn programming from a 30 days book and I failed again. So it worked out. The problem was that these 30 days, 30 weeks, 10 days, 21 days books never teach fundamentals. Most of them have many unreasonable assumptions. By reading these you can only have superficial knowledge about these subjects and 0% knowledge of basics. This is so strange but I myself wanted to write an article like Teach Yourself “Martial-Arts/Car-Repair/Large-Scale-Electric-Systems/Nuclear-Physics/Fine-Arts/somethnig-here/fill-your-favorite-words-here” in 10 Years.. AT that time I never came across anything like blog, in 1996 there was not internet at my place, therefore I never wrote the article. Later I went into different kinds of jobs and forgotten about it. When I started learning programming and started my blog I wanted to write one but then suddenly one day I came across Peter Norvig’s Teach Yourself Programming in 10 Years and I got surprised. I concluded I will not write any blog post about my experience because people will think I am copying Peter Norving and trying to imitate him. So I dropped the idea but in the meantime before internet came I shared my experience of 30 days books with my friends.

I don’t remember all the articles I have read over years. I will keep on adding them as soon as I remember.

 


Copyright © 2010 Arnuld Uttre, #331/type-2/sector-1, Naya Nangal, Distt. – Ropar, Punjab (INDIA) – 140126

Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.

Letter to Hurd Community

March 23, 2012 at 12:27 pm | Posted in Uncategorized | Leave a comment

Sometime back I wrote my ideas on the lack of a modern systems programming language. This thought keeps on coming back to my mind and I never think I can be the guy who can write a programming language because I lack the knack for it, I am not intelligent or gifted with any skills from God. Whatever I have earned in my life is pure hard work and I keep on trying although I lack intelligence. This is a letter I wrote (actually posted this on bug-hurd mailing list) to Hurd community. It wil be interesting to see what they reply.

I am very much intersted in writing a microkernel for HurdNG. Anyway, I see Debian is set to release GNU/Hurd by this year end or early 2013 and this is still on “old baby” Mach. I think many must have recognized my name already (may be the as the guys who talks and talks but does nothing *practically*). I don’t do anything because I don’t want to use C or C++ to write microkernel. I have my reasons for this:

After 40 years we are still using a language that was designed on some ancient piece of equipment to take benefit of the instruction set of that hardware. We have machines which are 1000 times powerful than those equipments but we still use the same language, earlier we didn’t have any higher level language that competes with the efficiency of C but today we have choices. Hardware has grown and technically blasted beyond the levels of imagination but system programming languages have remained there. I always keep on searching for options. I came across 3 choices: ATS, BitC and decac.

  • ATS: ATS is a statically typed programming language that unifies implementation with formal specification. It is equipped with a highly expressive type system rooted in the framework Applied Type System, which gives the language its name. Performance comparable to C (but not equal) at language shootout.
  • decac (ak.a Deca): Deca is a language designed to provide the advanced features of sophisticated, high-level programming languages while still programming as close as possible to the bare metal. It brings in the functional, object-oriented, and generic programming paradigms without requiring a garbage collector or a threading system, so programmers really only pay in performance for the features they use. Project hosted at code.google.com , still in development.
  • BitC: Lanmguage written for Coyotos. Went through many changes, looked very promising to me till the idea of using Coyotos as microkernel for Hurd was dropped for some technical reasons. As of now development of BitC has stopped and soon Shapiro is gonna come out with the post-mortem report of why it is stopped.

I have these questions:

  1. What do you guys think of this ? agreement, disagreement, hate this crazy idea, ? or look at this guy named arnuld, he is completely insane, thinking of rewriting 20 years of work into some new language in next 2 years.
  2. Is there any other modern systems programming language out there that I missed ?
  3. Any other advice, ideas to make Hurd as general purpose usable OS ? (its not usable as of now and I don’t think it will comete with Windows/Linux/MacOSX even in 2013).

If I go crazy then I may even rewrite entired Hurd as HurdNG in new language.

NOT RELATED: I was surprised to see Intel Fortran was above gcc in performance everytime. I thought C is the fastest language on Earth: http://bit.ly/GHSFZO

 


Copyright © 2012 Arnuld Uttre, Village – Patti, P.O – Manakpur, Tehsil – Nangal, Distt. – Ropar, Punjab (INDIA)

Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.

The Real Programmer

March 19, 2012 at 11:04 am | Posted in Programming | Leave a comment
Tags: , , , , ,

I was checking out what new language to learn. There are several points here:

  • Language: Most newbies or less experienced programmers think of learning a new langauge and thats it. They think learning more languages will make them better programmer. Unfortunately this is not true.
  • New Paradigm : Other experiences programmers want to learn a new paradigm which will change their way of thinking and make thema better programmer rather than a programmer who knows several languages. He thinks that learning a language like C++ wil automatically make him an OO expert. Sigh…. he got immature mindset too.
  • Reality Check : No matter what a programmer wants to do, either of the above or both, his thoughts are crushed by the reality of the software as an industry. He works whole day and then he has a family and he wants to have a life too and there are only 24 hours in a day. Out of all this mess and busy schedule, he starts thinking that he can not afford to spend time learning a langauge which does not give him a rise in his income.
  • RealProgrammer : . Now there is another breed of programmers, which I call real programmers (I am one of them. What you think ? … No ? … c’mon just believe it because I am the author of this post 😉 ) Here the real programmer, I mean the one who does not believe in quick fixes, the one who started programming because he likes it, because he is happily willing to live next 20, 30, 40, 50 years of his life writing code, THAT ONE decieds to go long term. Rather than deciding on income-factor he goes with programming-factor, he decied to learn new-paradigm, decides to check out something unheard in industry but heard a lot from the mouths of good programmers.

Learning programming for income is like a adding one more language to your Resume and that stops right there and it adds not much to your skill as programmer. I think you must aim for getting more out of the time you spend, you must aim differently, you must aim what your common-sense thinks is right. Unfortunately most programmers don’t have that common-sense because industry is full of programmers who do it for money just like a fruit-seller who sells fruits for money but himself does not eat much of them because he is not interested in how fruits lead to good health. My advice will be wathcing and observing what all brilliant programmers are doing from years and learn from them. Thats what I do.

I am a C Programmer and I wanted that new language to help rise in my career too. Of course the choice came out to be C++. But C++ is almost in the same paradigm as C plus more. C is procedural while C++ has OO and generic paradigms added to and it is designed in such a way that you can add a lot of other paradigms to it but C and C++ belong to almost same kind of mindset. I wanted to write a microkernel for Hurd, hence I dwelled into other languages like BitC and decac etc. but then again lack of time and my focus on what can I do to become better programmer and use my time with maximum productivity. Here are the options I think I have found:

  • Haskell
  • ErLang
  • Common Lisp
  • Python
  • Ruby
  • Ada
  • Caml
  • BitC
  • decac
  • Eiffell
  • RISC Assembly
  • D Programming Langauge
  • Prolog
  • C++

Now, I can’t learn everything, it will take 2 lives to finish this list off. So after lot sof googling, lots of readings of practical views, research papers etc etc I selected Common-Lisp. Lisp is 2nd oldest language still in existance after FORTRAN. Lisp has a changed a lot since then. Code and Data are same in Lisp. Many concepts were developed first in Lisp and then in other languages e.g. garbage collection. You can write Lisp code which will write Lisp code, its like creating a new language yourself. I learned about recursion in 7 days which I struggled to learn for 4 years with C and C++. I learned Binary-Search in 5 minutes which I am trying from last year to understand with C, in C you struggle more with how to write in C rather than the abstraction of the problem and its solution. (No wait… I am not attacking C, Not at all. C is a great language to learn to know about pointers which Lisp intelligently hides. You must learn both C and Common-Lisp if you are serious about programming.) For Managers Common-Lisp has OO and the next generation fancy (but practical) words e.g. MOP (Meta-Object Protocol if you have never heard of it). There are lot of strange languages and I don’t know why Common-Lisp impressed me so much. So far I have seen only one company in India using it.

Bottom line is: If you want a job, learn Java, C#, .NET or C++ . If you want to be a better programmer and willing to spend next 20 years of your life writing code, you better learn C and Common-Lisp and yeah arrays and pointers are not same and code is data in Lisp. The point is not to run after money but specizlized skills in programming. Specialized skill over long-term attracts money automatically.

 


Copyright © 2012 Arnuld Uttre, Village – Patti, P.O – Manakpur, Tehsil – Nangal, Distt. – Ropar, Punjab (INDIA)

Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice, and the copyright notice, are preserved.

Blog at WordPress.com.
Entries and comments feeds.