Are you a carpenter, construction worker, electrician, or similar? If so, odds are you have a tool box. How many tools are in there, like 15-20? That sounds about right. Are they all the same tool? Hecks no! That would be crazy! Why the heck would anybody do that!
Wake up call! You do!
Yeah, I’m talking to you! The one who uses C++ for all of his problems. You! The one who wrote every single one of his apps in the last ten years with Java! You! The one who asks every single one of his questions on Stack Overflow, even though Programmers.SE would have gotten him better answers!
Now that we’ve gotten that all settled, let’s have a talk.
Jack of all trades…
OK, so we’ve figured out you have a problem. You only use one language for everything even though there are better tools for the job. Let’s take a C++ addict for example. I have no problem with C++, in fact I like it a lot. It’s useful for creating GUI applications on your desktop and games, and if you’re a C++ guru, it may be good for text processing and such. But once you start making web apps, please back away. Seriously, just drop the gun and back away, because that’s what it is, a gun.
Every language can be thought of as a gun. You can hit the target every single time for some projects, but for others, it will backfire, e.g.
- Messy code
- Low functionality
- More work
- More development time
Now think of C++ as a gun.
- 3D Game – Bullseye
- Art application – Bullseye
- Q&A Site – Hospital Bed
Now let me make sure I’m getting my point across. C++ can be awesome for web development, especially when considering speed and agility (Google is written in C++), but it is going to take longer and it is going to be a lot more code than needed.
That’s where my argument comes in.
You want to get things done. Right? Most people want there software to be as easy, clean, and fast as possible. C++ gives you the speed, and the clean, but it’s not easy to do, and takes a lot more work. So why not use another tool? Why not learn another language?
Do you see what I mean yet?
…master of all
You know how some people say you should be a “Jack of all trades, master of none”? That’s bull crap. You should master them all, or at least attempt to. Now, I’m a firm believer that you can’t completely master a language, unless you’ve been using it religiously for a really long time. What I mean by master them all though, is get good. Know what you can do with the language, when you should use it, and when you shouldn’t. And above all, be able write reusable code.
Don’t learn a bunch of similar languages though. Learn languages from different paradigms, different ways of thinking.
So what’s the point?
- Stop using one language to do all of your jobs. There is a reason the “god-language” doesn’t exist yet: it can’t happen. There will always be downfalls to a language, and we have to be able to see which language will help us get a specific job done faster.
- Be able to have the luxury of choosing which language to use by learning many languages and paradigms. It will help you think differently about programming, and make your code in any language much cleaner and readable.
- Do what will help you. That’s probably the golden rule. Don’t learn a language because it is extremely popular. Learn it because it will help you get the job done.
I’m done playing around. Perl sucks at web development.
Wait, wait! Let me clarify. Perl is actually a great language for database communication, and creating full-blown websites! It has great modules to help you do so, and everything! But compared to other scripting languages, Perl sucks at web development. There are two major reasons for this:
- Perl has a major lack in documentation when it comes to it’s web frameworks. Even the books that are written on certain frameworks are terrible.
- The code gets messy. Now, let me be the first to say that any Perl code can get messy, and I like to think that I’m good at keeping it clean. But it gets nearly impossible to keep clean when developing for the web.
Now, for those of you who are saying “But PHP stinks!”, I’m a firm believer that every language has a main purpose. Yeah, I can make GUIs in Perl. Sure, I can manipulate text with Lisp. But why should I? There are better tools for the job. My goal here is to find out what the right tool is for the task at hand. After intense research and communication, I’ve decided to start with PHP.
Wish me luck!
Note: This is all from a Windows viewpoint.
Vim is an advanced text editor. It can be used to edit any type of file, but is used mainly to edit source code. The main advantages of Vim are:
- It’s speed. On my PC (Celeron processor, 2GB memory) it opens on click. I also have Eclipse IDE on my PC. I takes about a minute and a half to open. On top of opening speed, when Vim and an internet browser are the only things open, Vim never freezes. Actually, I can have about 7 Vim windows open and working on my (very slow and old) PC, without slowing down at all.
- It’sagility. Vim has an awesome split-open feature that allows several files to be open in the same window, without getting messy. You can also tab files, as you would do in an IDE.
- Syntax highlighting and “helpers”. The reason I love Vim is that it doesn’t overwhelm you with automatically adding closing brackets when you open one. It’s also really awesome with syntax highlighting. Not too much, not too little. It also has the auto-indent that everyone loves. Vim gives you just enough to get the job done fast.
- It has built in file searching, regular expressions, and commands. Honestly, it’ll take a few days of heavy working to get used to Vim’s built in commands, and even then you won’t know the whole thing. For that, I’ll send you to Vim Docs.
Let’s look at a few screenshots:
So let me conclude with this… If you want a quick, light-weight, powerful text editor, Vim is the way to go! And on that note, here’s the download link.
If you look at programming languages like Ruby, Python, and Java, you see a well established, corporate backed community. Ruby, for example, was created by Yukihiro Matsumoto, a Japanese Computer Scientist. Python was created by Guido van Rossum in the Netherlands, and Java began development with James Gosling, Mike Sheridan, and Patrick Naughton, and was established and given to the public by Sun Microsystems (which was bought out by Oracle).
After creation and their first public release and beyond, the languages, as well as their communities, continued to grow.
Now, look at a language like Lisp. It was first made a “real programming language” by Steve Russell. The difference between a guy like Matsumoto and a guy like Russell, is that Matsumoto had total control over the language. Russell, on the other hand, allowed the language to fragment. This is the reason Lisp is more of a family of languages, while Ruby, Python, and Java are individualized languages.
Now, if your a language designer, the first question to ask yourself after developing the language is “Do I want full control over what happens with this?”. If the answer is no, then your probably going to end up like Lisp. If the answer is yes, then your on the right track. See, to make sure you keep your language together, you have to take control. Basically, you have to be a vicious king.
You may be thinking, “But Python doesn’t have a King!”. Yes, you right. But Python has corporate backing. The language is heavily endorsed by Google, as one of the few languages that are allowed on their App Engine, as well as a language that is widely used throughout it’s services. Java’s current King is, of course, Oracle, but it also get’s backing from Google (main Android development language). Ruby’s creator also has a strong hold on the language’s path.
This post has kind of been all over the place, so let me just conclude. A language’s community is kept together with:
- A viciously strong king
- Corporate backing
If you have one of those two, then you are all good.
Well not literally, but you get my gist.
When you get an idea, what do you do with it? Do you ponder it for a few minutes, and then forget about it completely? Do you try to execute whatever it is ASAP? Then, if you fail, you forget about it completely? These are two things that I hated myself for doing. I remember having great ideas, that could actually get somewhere. Whether they were business ideas or writing prompts, a new software or a fresh product, I forgot them all. I went into a deep, dark state of sadness…
In all seriousness, I got pretty ticked. So I set out to Walmart and got myself a handy-dandy notebook. Well, it was actually a college ruled notebook. Anyways, I began writing all of my ideas in this notebook. If I was out of the house, and didn’t have my notebook on me, I would write a brief description of the thought into my phone’s notepad, and elaborate when I got home. This worked for two reasons:
- I didn’t have to worry about losing my notebook when I went out of the house.
- I was able to keep track of my thoughts in a simple, effective way.
I’ve been doing this for about 6 months, and am happy with the results. I encourage you to do the same. It doesn’t even have to be a paragraph of writing. Just give it the following format:
- Title (top)
- Bullets describing thought (middle)
- Date (end)
Now go get yourself a notebook, and get ideological!
Have you ever seen a commercial advertising a product, and you thought to yourself “Oh my gosh, I could’ve thought of that!”. Oh you can? Then why didn’t you? Let me just say, innovation is hard! People who are making these new products for us, in my eyes, are awesome!
Have you ever heard of the Modern Art Period? It was a worldwide movement, starting around 1900, after the invention of the camera. Basically, before this time, artists were painting portraits exactly how they were seen (or as close as possible). When the camera came around, artists were free to create whatever they wanted, as they didn’t have to paint realistically. This entire movement was what innovation was all about. Like, who the heck would’ve thought of making this (besides Picasso of course):
Now, imagine about 100 years of art like this! Amazing! Now, let’s translate this into technology. We went from IBM’s Punched Cards to Spacewar! to C to the Internet to Lisa to the iPad… and so on. Now ask yourself, could you have come up with any of those ideas before they were invented? Maybe, but most people wouldn’t have.
What’s the point I’m trying to make here? Start thinking. Think about how much work went into today’s technology. Do you think you would have thought of it? Of course, you never know. Maybe you will think of the next big thing…
Hi, I’m Dynamic. Capital “D”, lowercase “ynamic”. Dynamic. I’m an extreme computer enthusiast, and I’m interested in:
- Computer Hardware
- Computer Software
- Software Development
- General Hacking
- Lots of productive and helpful ideas
- and a lot more…
So this blog is going to be pretty geeky…
Why are you blogging?
Because I needed a place to keep all of the information (objective and subjective) that I find interesting. The great thing it is, you can read it too!
What will you be blogging?
I will be blogging about my interests of course. I will mainly blog subjectively, unless it is a how-to like post. Then it will be objective.