What programing language should I learn first? I'm a beginner B.Tec 1st Year student.

Python is a solid first choice, it's really easy to get up and running, it's very sensibly designed and has plenty of libraries to choose from when you start doing more advanced things.

I would start with C.

I agree with pty. Python is a great first choice. That's why many schools/universities are using it as a first language. You chould learn C but I would wait until you have a grounding in programming fundamentals. There are gotchas in every language, but the ones in c are harder to get your mind around until you understand the basics.

If you have any of the MS Office products installed (especially Excel), you could experiment with VBA (Visual Basic for Applications) immediately.
It's a fairly safe environment where you can understand how code flows and the use of functions and classes without needing to understand operating system quirks.

Python is HOT now. Ruby (core Ruby) is good (and logical). C is an education in what's really going on without having to go to assembly language.

I get paid to program in C#, however (by choice).

commented: I do C# as a hobby, love it! +0

Definitely python the options are endless, machine learning is the future so best choice will be python!

If you are doing a B. Tech. then doesn't that include some element of programming? In which case what language does the first such class use?

Python will teach you to write a readable code also because the program code syntax is based on deviations

@AndrisP:

also because the program code syntax is based on deviations

also is not needed here (make that error very often also) :)
What do you mean by deviations?
Statistics: standard deviation?
Or: derivation, which could be a math derivative or a term for inheritance.

I think he means indentation instead of deviation. Python's success is amazing in this thread! I think the best reason for a beginner to choose python is that it is one of the fastest ways to obtain concrete results without learning a bunch of theoretical computer science. A second reason is the excellent and explicit error messages that python delivers when the program doesn't work. Debugging python is a breeze and one almost never needs a debugger. By contrast, a C beginner is faced immediately with the cryptic Segmentation fault message, then what do I do?

I started with Pascal UCSD in 1983, then I learned C, scheme, C++, perl and I discovered Python in 1995 and it changed completely my interaction with computers. It's the first language that gave me the tools to finally master the beast !

C beginner is faced immediately with the cryptic Segmentation fault message, then what do I do?

Well first, pull your hair out or run against a wall or so, but in the end you'll learn.
Languages like Python, C# and I believe Java also don't use pointers and that's good, it's speeds up your programming time, but as a beginner you would skip learning something essential.

Member Avatar for diafol

Python is a good first choice. It seems to have placed itself top of the "begin here" languages in schools too. Minimum setup nonsense too. :)

@diafol. I want to address the Minimum setup nonsense concept. While I agree that learning programming can be the goal, learning to setup your tools is still something a complete programmer needs to learn.

Example? We use small microprocessors on boards to hit pricing goals. The tools to program these are not too hard to setup and I make it a point to document the setup in a page or less so the next person doesn't have to discover on their own how to get the compiler and more to work.

We had to let a few programmers go over the years because they were not well rounded. They needed too much support on setup or demanded we setup the programming environment for them.

To be fair we didn't demand they know all this and would show them the first or second time but there is some "entitled" feeling you get from some today and that's not a good thing.

Member Avatar for diafol

Well I beg to differ on the installation bit. If you want somebody to get the programming bug, there's nothing worse than an insane installation procedure to curb your enthusiasm. I remember failing to install vb studio after .net came out, upgrading from vb6. It killed me. So I got involved with php.

But if that was the be all and end all then perhaps I'd suggest Javascript :)

@diafol. For the new to this crowd I agree, but a bona fide papered software engineer?

Keep in mind the OP says "I'm a beginner B.Tec 1st Year student". I would expect a first year carpentry apprentice would be better served learning how to use a hammer, saw, plane, etc. than how to make a hammer, saw, plane, etc.

As for learniung VBA, I would recommend against that as a first language. Too much other Office crap getting in the way. Better to go with Python, but if you don't want to install anything there is always vbScript.

Another advantage of Python (and other interpreted languages) is that you can learn the syntax much more quickly and easily while using a REPL. For those who don't know, you can just type in code and it evaluates it and prints the result:

>>> colours = ["red", "yellow", "pink", "green"]
>>> for colour in colours:
...     print(colour)
...
red
yellow
pink
green

If you make a mistake, you'll see it as soon as you hit enter.

>>> for colour in colours:
...     print(uh_oh)
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
NameError: name 'uh_oh' is not defined

For people learning to code, this is way more intuitative and less frustrating than the way I learned many years ago; the feedback loop is much tighter and there isn't much that can go wrong inside a REPL, you don't have to take the extra steps of learning to use a compiler and a shell, troubleshoot non-executable files and permissions and other things that we don't think twice about but trip up newbs.

All nice and well, but I prefer the help that Visual Studio offers me.
Intelli.png
Here I typed SW and a point SW., immediately Intellisence pops up offering me all the properties and methods of in this case a StreamWriter object. Just have to pick what I need out of th list and I can continue coding.
If I should choose to ignore that and typed ZZZ:
WrongTyping.png
ZZZ gets marked with a squiggly red line. If I hover over it, Intellisence pops up together with a messages what probably could have gone wrong.
I never found a something who could beat that, if anyone knows, please tell me.
My only effort I did in Python is this snippet

If you're teaching someone C# as their first language, Visual Studio makes sense - it's an excellent environment all round and providing everyone's using Windows it makes sense to use it.

For people new to programming, though, I'd start with something more expressive. Incidentally, omni-completion (aka intellisense) has been present in just about every half-decent programming environment since the 80s. Here it is in Vim with Python.

Hmm, since the 80s? Let me doubt that. But I guess Intellisence is around in many programming environments today.

Member Avatar for diafol

I'm not sure full-blown (over-blown??) IDEs are the best environments for those starting to programme. The complexity and nomenclature can be bewildering. "Simple" text editors, with or without code completion, would be my preference - you can concentrate on building your skills rather than be bogged down with twenty different panels and tabs with incoherent symbols and icons.

Learning data types, control structures and loops, arrays/collections - the nuts and bolts of nearly all languages should be done in a nice uncluttered environment. The "no-phaff" IDLE is ideal (IMO) for this. You can use more sophisticated editors/environments as your skills grow (PyCharm community is v. nice). That's where I see Python as a winner. BTW, I have little experience with Python compared to other languages, so am not a raving fanboy. :)

@diafol You'll probably have a slightly better experience with Idlex, which enhances idle with some missing functionalities. However, a powerful editor such as Kate may be more comfortable to use than an Ide for python.

Member Avatar for diafol

Thanks Gribouillis. I'll have a look when I get into more py. I very rarely use it, but may be teaching it to some kids next year, so I'll have to get my tabs sorted :)

I'm not sure full-blown (over-blown??) IDEs are the best environments for those starting to programme.

I agree. Sitting someone down at the controls of a 747 is not the best introduction to learning to fly a plane.

I'm not sure full-blown (over-blown??) IDEs are the best environments for those starting to programme.

Guess you are referring to Visual Studio. Just so happens I'm using it all the time. Just using the editor window, wich IMHO is unbeatable by any other editor I know. I further use the Solution-, Properties- and error windows and that's it. I make great(well small thingies) sofware with it. I can use C#, VB, C++ and F#, right out of the box. I wanted to install Python, but my C-drive is almost full. :(
Nobody uses all the knobs and handles on the dashboard of his car, knowbody uses all the features build into Excel. And Jim, I guess that even counts for the knobs and whistles on a 747.

Member Avatar for diafol

Is your C drive full because of the VS? :D

The point dd, is that Python is a beautifully easy language to start with and that you don't need high spec IDEs to begin using it. I'm not slagging off VS - I now have it myself on a new laptop, but years ago it gave me all manner of merry-go-round issues with missing dll files when I tried to install it. Learning the nuts and bolts, as I mentioned in an earlier post - and I stress - IMO - is better done in a user friendly jargon-less bare bones editor. As your skills develop, you'll need more features and shortcuts - when you get to that level and you are ready to create a sizeable project, then fine, look for a decent IDE. My 2p.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.