In 1998, Thanks to Dugles Devanana, a politician at that time in Jaffna, had an institute opened to study computer called ‘IT Park’ and I joined with my parents support to Study Microsoft Excel. Ever since I clicked on the ‘Start’ button, everything excites me when it comes to computer. Everything’s still an absolute magic and as intact nothing understandable. Then over the cause of last 15 years, I have learnt number of programming languages. The main ones are PHP, Flash Action Scripts, ASP, JAVA and .NET. It’s really a headache to decide as to which one to go for when I start a new project.
I spent my early tech life praising php. It is still a great language for many specific type of web development. Easy to learn, easy to use, free, widely used, most hostings support, simple and sweet. Hosting applications on low budget or deploying /changing the hosting location is extremely easy and I never had any issues deploying. However, PHP is not great at scaling in terms of programming. The main problem with PHP isn't that it's not scalable. The problem is that the majority of PHP coders don't have a clue about OOP, design patterns, coding standards and simply don't know how to write scalable code although it's perfectly feasible in PHP.
For small applications, though, J2EE and .NET can really be overkill. In Java, a lot of time needs to be spent configuring and tuning Hibernate, struts-config, etc, so simple CRUD applications are usually done best in PHP.
So, it would be unfair to compare PHP with Java or .Net. PHP is best to develop simple sites. I think, we should only compare Java and .NET due to the similarity and the capabilities.
Both multi-tiered, similar computing technologies, both support “standards”, both offer different tools & ways to achieve the same goal. A lot of parallelism can be seen. Very difficult to compare and qualify the comparison because each has its own advantages & disadvantages.
So, when I think about Java,
- Truly platform independent.
- Free(very much) and Open Source (very little).
- Loads of libraries and APIs available.
- According the Java Update Advert, more than 3 billion devices use Java.
- Very secure and stable, but comparatively slow.
- True object oriented.
- Methods are virtual by default and static imports available.
- Instance-level inner classes and interface for enums.
- As far as I see, more job opportunities.
- Many major applications are written in Java. (For example, I’m currently working on Pega BPM suit and it’s extremely sophisticated and purely written in JAVA.)
- Easy integration to new devices without the need to have windows.
- No automatic fall-through from one case block to the next.
- Strongly-typed enums.
- By reference calls are explicit at caller AND callee.
- Method overrides are explicit.
- Supports versioning.
- Structs (value types).
- Integrated support for properties and events.
- Can still use pointers with RAD language.
- Can share data and use functionality with components written in many different languages.
- Unsigned integers.
- High precision decimal number.
- Complex numbers.
- Value types.
- Lifted (nullable) types.
- Tuples.
- Pointers.
- Instance-level inner classes.
- Statement-level (local) anonymous classes.
- Enums can implement interfaces.
- Object initializers & Collection initializers.
- Explicit interface implementation.
- Reference (input/output) parameters & Output (output) parameters.
- Runtime realization.
- Value/primitive type constraint.
- Constructor constraint.
- Primitive/value type support.
- Method references.
- Closures.
- Lambda expressions.
- Expression trees.
- Generic query language.
- Late-bound (dynamic) type.
- Runtime generics realization.
I feel lucky to have chosen this career path that I often get to have fun coding and doing many fun things, yet there is one thing is really annoying. New immature technologies quickly be able to gain popularity and kill giant technologies or treads. We spend learning a language taking years and by the time we become competent, there would be a new and better programing language getting attention. I have been coding in PHP, Java and in C# the last decade and the fairly new languages ROR and GO makes me nervous.
Just to write this blog post, I was reading about Go lang and Ruby on Rails. As far as I read, it’s a bit tough to write something sensible on Go with my knowledge. I understand that it’s an improved C and not a pure object oriented language, more of procedure language. Google initiated and developing to handle it’s “Big Problems”. I don’t see any big company using other than Google and the online resources and learning materials are limited.
On the other hand, ROR is now becoming extremely popular and I see why. I really want to learn ROR for many good reasons. Ruby is a programming language, and Rails is an application framework that uses Ruby. ROR lives by the principle that "convention over configuration" which is something I'm still struggling to understand. Rails is written in Ruby, which is a language explicitly designed with the goal of increasing programmer happiness. It is very true.
Now about 2 to 3 hours I’m trying different different code techniques on ROR and it’s truly a joy coding. Please check the code below and if you could think of a C# or PHP or java version of it, you will understand what I’m talking about. I guess, you could really have fun coding once you started off with ROR.
describe Bowling doSo to conclude the first question I had in my previous post, I’m going to say, programing language choice should really be about the project we are going to be working on considering the,
before(:each) do
@bowling = Bowling.new
endit "should score 0 for gutter game" do
20.times { @bowling.hit(0) }
@bowling.score.should == 0
end
end
- Complexity.
- Scale.
- Type of project.
- Resources needed.
- Performance and security.
.NET to have ROR style of programing would be my dream.
No comments:
Post a Comment