Learning new software languages

E

Thread Starter

engineer

hi all,

i am looking to learn a new software.

from what i have gathered from my present job (commissioning & maintenance), VB seems to be a good option. (i did not code in VB when i was in college). it looks easy too (just a view, and it seems much like labview though the code is similar to C or for that matter basic :)). i currently do ladder & STL, SCADA till now roams at large.
any comments/suggestions/warnings/forecasts/alternatives, recommendations/criticism...are welcome. i also like the word alias.
 
I'd learn C# or Java. I personally chose C# for desktop applications because we are in a Microsoft environment at my work and it is similar in Syntax to good ole' C which I use as well. Also, C programming is still the leader in embedded programming, you can't go wrong there if you think you will move on to that universe eventually. Today there is no excuse not to learn any of these languages as the free tools are excellent.

Do you have any projects that you could do to try and learn? I find you don't really learn something well until you try it. Sometimes you have to initiate a programming project or do something for yourself outside of work.

KEJR
 
J

James Ingraham

This is a really tough question. I've been thinking quite a lot about it recently. I'm a professional developer, as well as a hobbyist. My brother is in a similar position. I have a niece, nephew, and daughter who are all interested in learning to program. Beginner, hobbyist, and professional have different needs. So do different project types; embedded, desktop, web, games, high performance, the list goes on. No one language is appropriate for all scenarios.

If you are primarily doing embedded or high performance computing, you basically MUST know C. It's a very difficult beginner language, however, and anything with a GUI becomes another set of problems.

For web development, JavaScript is the lingua franca. Unfortunately, it also means you need to know HTML, CSS, and probably some framework like jQuery.

C# is arguably one of the best designed languages, and it is rising in popularity. It is similar in may ways to Java. Both have their pros and cons. C#'s biggest flaw is it's deep ties to Microsoft. (And yes, I know about Mono.)

The dynamic languages also have some advantages. Python is pretty solid. I'm not a fan of Ruby, but lots of people are. GUI's are a problem again; neither has an official one, although there are lots of options.

Then there's all the JVM based languages, like Groovy, Scala, Jython, etc. But will they survive?

I know I haven't really helped here. So to boil it down:

Embedded / high-performance: C
Microsoft-centric: C#
Cross-platform: Java
Web: JavaScript
Beginner: ? (Maybe JavaScript thanks to CodeAcademy?)

-James Ingraham
 
Your message James is excellent and for the most part I agree with you, especially when you wrote "C# is arguably one of the best designed languages, and it is rising in popularity."

One sad thing is that C# is not used much in embedded except for WinCE stuff. But the good news is that I can use something *very* similar for embedded work, even for embedded projects that have a GUI.

The fellow who created most of C# is the same fellow who developed Turbo Pascal and Delphi. I guess I could turn things around and say I've been productively using a Win32 native version of C# (with Pascal syntax) since 1995! :) This page has a bit more information:
http://www.turbocontrol.com/embeddedfreepascal.htm

Maybe Delphi isn't used much in factory automation, but it is used a lot in many engineering fields with major data acquisition systems. And the latest version of Delphi supports writing iOS native apps. iOS doesn't appear to be used in embedded projects but if that changes I will be very interested!

Free Pascal and Lazarus offer a lot of native cross-platform options to those familiar with Delphi. Those free open-source tools are being used for significant real-world projects. Here are some testimonials:
http://www.lazarussupport.com/lazarus/Testimonials

Last year UPS had a job opening at their main automation development place in Georgia and they included Delphi and Free Pascal experience in the list of things they were looking for. I'd sure like to learn more about their usage! :)

Since Free Pascal is open-source it is easy to provide 2-3 MB zip files that contain the compiler, source code for a widget set, and everything needed to give it a test. The "EasyfpGUI" page at this educational project site shows how easy cross-platform embedded GUI coding can be:
http://www.turbocontrol.com/monitor.htm

So I think there are nice alternatives to using C for embedded stuff.

Paul Breneman
www.TurboControl.com
 
C

Curt Wuollet

I've been programming in C for about 30 years. It's very likely that I will continue until I keel over at the keyboard.

I think the reason C is hard for beginners is exactly why it should be a first language. You learn at least something about what's under the covers binary, hex, memory management, efficiency, bit twiddling ands and ors, etc. Now I suppose it's good to have an OO language as well. The clear front runner would be Java. D flat won't help you with Android and it's ties to MS will typecast _you_ . I am not a Java fan, I find it hard to believe they shoehorn Java the Hut onto tiny Android phones. But in my recent two year+ job search, Java was the most often requested skill and I only was asked about D flat once. I was asked about COBOL and RPG more often. In this arena, C and C++ are still the most often mentioned, but the sector I'm interested in might be a factor.

Regards
cww
 
ah, the world disapproves my verdict!

actually, about one-n-a-half years ago, i used to program microcontrollers, with C. that was my first industrial grind. then i moved this way.

i totally agree with CWW, that C should be the first language.
i am primarily interested in data acquisition system development. the discussion has left me with more than one option to ponder. let me do some internet search.

meanwhile, further comments are most welcome.
 
J

James Ingraham

@Paul: Interesting stuff. I have to admit I did not know about it. I mean, I knew about Delphi, and that there were still strong adherents to it, but not that there was an active Pascal-based embedded development community. Thanks.

-James Ingraham
 
Learning new language is an interesting as well as tough thing. I myself learn vb.net http://vb.net-informations.com many online free materials help me to lot to learning vb.net. I completed almost basic level and i am moving to advanced level now. If you have an aim, you can learn yourself any computer languages yourself, as per my experience.

ling.
 
after this thread, i started out with c#. actually, presently i am looking at .net framework, clr. having a look at examples in all the three langauages,c#, c++ and vb.

i have passed the "hello world"s, lets see :)
 
again i need to clarify my last statement (this is becoming usual now), i am not doing all the three languages, its just i am looking at the common language runtime concept and so i am looking at all the example programs.

i intend to carry forward with c# alone.
 
I started learning C# because I needed a front end to a robot controller that had active X control and my experience with VB6 left me feeling empty and very limited. I have since done many applications with it and enjoy the flexibility and intuitive API layout. Here are some observations over the years.

- JAVA seems to be more popular but it seems to be in certain sectors (I haven't figured this out yet).
* JAVA often gets confused or wrongly lumped with JavaScript

- Just about every automation component I've dealt with comes with a .NET or ActiveX component, not JAVA.
*I'm sure there is a wrapper tool for Java, but still....

- High performance applications are still done with C/C++.
* Just In Time (JIT) compiling can slow down your app, especially the first time things get instantiated.
* No RTOS that I know of will let the compiler manage memory and do JIT compile.
* With .NET you have to try and guess what the CLR is doing with your memory since it manages memory for you (This is mostly good, but sometimes its harsh).
* Dealing with strings can be time consuming in C but you mostly know exactly what its doing so you can optimize it.
* On the other hand, c# string manipulation can be wonderful if you are on a fast machine and just want to get your app working quickly.

The bottom line is that I think of the .NET (or JAVA) to be great for many desktop applications such as Visualization, data gathering, reporting/graphing, controls front end (HMI), etc. Do the real control work with your embedded robot controller, PLC, motion controller, or RTOS. What it boils down to is that there are compromises to every tool and pick the right ones for the job at hand.

KEJR
 
Top