Too ambitious ?
No, not really. Just being practical in terms of Investing in the Future and being objective about what to use each tool for. You see, I don't think that anyone ever truly "masters" a language programming or otherwise !
Rather it's a question of being Fluently Functional in the language of your choice. For me these five language mentioned above are useful and their importance is only going to increase as time progresses.
But still too confused about the languages that we are tackling at the same time ?
Oh, don't worry. Remember that we said we are going to work smarter, not only harder ! So, this is another step in that direction. Let's make an Analogy, oh wait a minute, let's first understand how and why to make analogies and approach complex systems.
You see, human brain itself lives in abstractions ! Now, think about it for a minute. Almost all of our activities are intuitive or otherwise based upon abstract information and assumptions. We thrive in it and I think it's even essential to the way we work.
Can you imagine how many factors and possibilities you ignore/overlook when you tell your friend that "See you at 3, tomorrow" ? You know, that in all probability, this "tomorrow" might not be the way you so casually put it. No, don't get cheeky, no comet is going to hit the planet;)
But even if we overlook all the possible natural factors, we still intentionally ignore so many others. Like, what if there is a traffic jam ? Or what if you decided to help someone cross the road ? What if the electricity failed and the public transport system was brought to a standstill ? Or all your clothes need a good wash and you have been lazy for such a long time ? What if your niece and nephew came to visit on their own ?
And Countless others !!
So, It is vital to form any system that we make Abstractions and Approximations. That's just the way we are;) Now, how can you use it to approach and simplify complex systems or information.
Trust me, now you would have at least a faint idea that you have been doing it your entire life. So already are as perfect as anyone could ever be at this.
So, let's take a leaf out of this observation and apply it to our goals. You see the best way to approach such a task is to divide it into little fractions and try to make them as well defined as you need ( but not more ! ) and then put in the effort.
And another thing that we need to take care of is to relate it to what we already have experienced. You know there is a Sufi saying that "You can only learn, what you already know ", I live by it;P
Find a real world analogy ( or possible application) of the concept you are trying to understand, this is called Active learning and the other kind which involves reading a novel which, if written well, compels us to get " involved " and experience what it wishes to convey as opposed to the Passive learning when we are doing things just to kill time. See, we are very practical and engaged beings by our natural disposition, just that we know and understand what abstractions and perfect rationality would look like.
The greatest of discoveries and inspirations came from real world problems and related events. Creativity is about connecting dots which no one else even sees, until someone points out to them. And the fun part is, they were already there long time before we noticed !!
Oh no, don't worry I am not drifting) Just preparing you for what if to come and how we are to approach it.
Think of computer language like a human language, we don't ever "really know" a language just that we are "Fluently Functional" in a language. Most of us don't ever use all the words we come across while reading, say poetry , well at least not while we are out and about, trying to order lunch in a restaurant;P
First we get used to all the everyday words and only later do we acquire a specialized vocabulary which is related to the work we choose to engage in. A mechanic's vocabulary is different from a teacher's, whose vocabulary is again different from an actor's or a musician's.
So, how is all of this related to the Languages we are talking about ?
Ah, another one of your to-the-point questions. Good)
You see Python is the language upon which Sagemaths is built, Python is the foundation stone so to speak over which the large library of dedicated mathematical functions are built. Though, Python by itself is extremely vast and has it's "Standard Battery" as its library is called by the programming community. So, being comfortable with Python is a must if we are to really know Sage's structure and understand it's various organs. Analogy, Python is like the bloodline which connects various organisms of the sage system !
Don't worry I'll list the resources in the next post so, sit back and just enjoy the story for the moment)
R ( not the rated one;P ) is another language that's wildly famous in Academic as well as the Commercial systems when it comes to statistics. Yes, it does bring to mind Brad Pitt's - Moneyball, doesn't it ?
It's integrated within the Sage system and this is the reason why sage sort of resembles Frankenstein's monster, but you know what , I'll bet on Sagemaths any day. It's "Why" is absolutely amazing and Humane, it Will only grow and it will grow only faster with time.
The R language is useful for explorations in Probability as well Statistics. I don't know about you, but when I was introduced to these subject in Mathematics, there was a lot of manual calculation ( especially in Statistics ) and all too many formulas really discouraged me to explore them on my own. I want to correct that now, the business feels so unfinished, kinda like "It ain't over, till I say it's over ";P
Then there is Julia, which a new programming language, based upon the lessons learned over the years in various aspects of Computer Science like Compiler Design, Parallel Computing, Functional Programming and just plain preference for Interpreted languages. If you don't understand any term, just Google them a bit or skim through them, you will come across them every now and then, so you are going to end up knowing them by heart. So, no pressure)
Another notable factor for Julia being the fact that it can be seamlessly used alongside Python, so if you want to call Python functions from Julia or vice versa, it's pretty easy actually.
Haskell, ah this is one of my favorites. This is a functional language and based along the lines of Lambda - Calculus ( Breath, Breath ! ). This basically means that it approaches programming through an entirely different paradigm for eg. there are no iterators and a lot more recursion. But learning something quite different from what you already know is something which add to you, broadens your horizons. Growth is essential for well being and it virtually guarantees that you would only become a better programmer and would be able to use the Functional aspect of Python and Julia as well.
BTW, the way functional languages work is much more closer to the way we use functions in Mathematics, so that's not a coincidence but a deliberate design.
Finally, Emacs. This is a text editor and I know that there are just so so many modern text editors out there, not to mention another awesome text editor Vim. For me the fact that Emacs itself can be extended using the intrinsic programming language (Elisp, from the LISP family ) is one of the main reasons why I want to use Emacs as a text editor. The learning curve is reputedly quite steep but think about it, if you climb a steep mountain how much more pleasurable it is to actually look back and notice your progress rather than just slogging it out in a long long march with a slow ascent. Doesn't sound appealing to me. And being able to really control the Text is one of the most vital pre-requisites of the programming world, we must not overlook it.
So, in the next post I am gonna elaborate more on these languages and list important resources which we are to use.
No, not really. Just being practical in terms of Investing in the Future and being objective about what to use each tool for. You see, I don't think that anyone ever truly "masters" a language programming or otherwise !
Rather it's a question of being Fluently Functional in the language of your choice. For me these five language mentioned above are useful and their importance is only going to increase as time progresses.
But still too confused about the languages that we are tackling at the same time ?
Oh, don't worry. Remember that we said we are going to work smarter, not only harder ! So, this is another step in that direction. Let's make an Analogy, oh wait a minute, let's first understand how and why to make analogies and approach complex systems.
You see, human brain itself lives in abstractions ! Now, think about it for a minute. Almost all of our activities are intuitive or otherwise based upon abstract information and assumptions. We thrive in it and I think it's even essential to the way we work.
Can you imagine how many factors and possibilities you ignore/overlook when you tell your friend that "See you at 3, tomorrow" ? You know, that in all probability, this "tomorrow" might not be the way you so casually put it. No, don't get cheeky, no comet is going to hit the planet;)
But even if we overlook all the possible natural factors, we still intentionally ignore so many others. Like, what if there is a traffic jam ? Or what if you decided to help someone cross the road ? What if the electricity failed and the public transport system was brought to a standstill ? Or all your clothes need a good wash and you have been lazy for such a long time ? What if your niece and nephew came to visit on their own ?
And Countless others !!
So, It is vital to form any system that we make Abstractions and Approximations. That's just the way we are;) Now, how can you use it to approach and simplify complex systems or information.
Trust me, now you would have at least a faint idea that you have been doing it your entire life. So already are as perfect as anyone could ever be at this.
So, let's take a leaf out of this observation and apply it to our goals. You see the best way to approach such a task is to divide it into little fractions and try to make them as well defined as you need ( but not more ! ) and then put in the effort.
And another thing that we need to take care of is to relate it to what we already have experienced. You know there is a Sufi saying that "You can only learn, what you already know ", I live by it;P
Find a real world analogy ( or possible application) of the concept you are trying to understand, this is called Active learning and the other kind which involves reading a novel which, if written well, compels us to get " involved " and experience what it wishes to convey as opposed to the Passive learning when we are doing things just to kill time. See, we are very practical and engaged beings by our natural disposition, just that we know and understand what abstractions and perfect rationality would look like.
The greatest of discoveries and inspirations came from real world problems and related events. Creativity is about connecting dots which no one else even sees, until someone points out to them. And the fun part is, they were already there long time before we noticed !!
Oh no, don't worry I am not drifting) Just preparing you for what if to come and how we are to approach it.
Think of computer language like a human language, we don't ever "really know" a language just that we are "Fluently Functional" in a language. Most of us don't ever use all the words we come across while reading, say poetry , well at least not while we are out and about, trying to order lunch in a restaurant;P
First we get used to all the everyday words and only later do we acquire a specialized vocabulary which is related to the work we choose to engage in. A mechanic's vocabulary is different from a teacher's, whose vocabulary is again different from an actor's or a musician's.
So, how is all of this related to the Languages we are talking about ?
Ah, another one of your to-the-point questions. Good)
You see Python is the language upon which Sagemaths is built, Python is the foundation stone so to speak over which the large library of dedicated mathematical functions are built. Though, Python by itself is extremely vast and has it's "Standard Battery" as its library is called by the programming community. So, being comfortable with Python is a must if we are to really know Sage's structure and understand it's various organs. Analogy, Python is like the bloodline which connects various organisms of the sage system !
Don't worry I'll list the resources in the next post so, sit back and just enjoy the story for the moment)
R ( not the rated one;P ) is another language that's wildly famous in Academic as well as the Commercial systems when it comes to statistics. Yes, it does bring to mind Brad Pitt's - Moneyball, doesn't it ?
It's integrated within the Sage system and this is the reason why sage sort of resembles Frankenstein's monster, but you know what , I'll bet on Sagemaths any day. It's "Why" is absolutely amazing and Humane, it Will only grow and it will grow only faster with time.
The R language is useful for explorations in Probability as well Statistics. I don't know about you, but when I was introduced to these subject in Mathematics, there was a lot of manual calculation ( especially in Statistics ) and all too many formulas really discouraged me to explore them on my own. I want to correct that now, the business feels so unfinished, kinda like "It ain't over, till I say it's over ";P
Then there is Julia, which a new programming language, based upon the lessons learned over the years in various aspects of Computer Science like Compiler Design, Parallel Computing, Functional Programming and just plain preference for Interpreted languages. If you don't understand any term, just Google them a bit or skim through them, you will come across them every now and then, so you are going to end up knowing them by heart. So, no pressure)
Another notable factor for Julia being the fact that it can be seamlessly used alongside Python, so if you want to call Python functions from Julia or vice versa, it's pretty easy actually.
Haskell, ah this is one of my favorites. This is a functional language and based along the lines of Lambda - Calculus ( Breath, Breath ! ). This basically means that it approaches programming through an entirely different paradigm for eg. there are no iterators and a lot more recursion. But learning something quite different from what you already know is something which add to you, broadens your horizons. Growth is essential for well being and it virtually guarantees that you would only become a better programmer and would be able to use the Functional aspect of Python and Julia as well.
BTW, the way functional languages work is much more closer to the way we use functions in Mathematics, so that's not a coincidence but a deliberate design.
Finally, Emacs. This is a text editor and I know that there are just so so many modern text editors out there, not to mention another awesome text editor Vim. For me the fact that Emacs itself can be extended using the intrinsic programming language (Elisp, from the LISP family ) is one of the main reasons why I want to use Emacs as a text editor. The learning curve is reputedly quite steep but think about it, if you climb a steep mountain how much more pleasurable it is to actually look back and notice your progress rather than just slogging it out in a long long march with a slow ascent. Doesn't sound appealing to me. And being able to really control the Text is one of the most vital pre-requisites of the programming world, we must not overlook it.
So, in the next post I am gonna elaborate more on these languages and list important resources which we are to use.
No comments:
Post a Comment