Home | Blog | Software | Reviews and Features | Forum | Help | Donate | About us
topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • December 08, 2016, 08:05:05 PM
  • Proudly celebrating 10 years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Last post Author Topic: Programming in the Linux operating system: where to start?  (Read 15055 times)

Gothi[c]

  • DC Server Admin
  • Charter Honorary Member
  • Joined in 2006
  • ***
  • Posts: 858
    • View Profile
    • linkerror
    • Donate to Member
Re: Programming in the Linux operating system: where to start?
« Reply #25 on: April 11, 2008, 03:33:35 PM »
Only knowing asm or only knowing procedural programming is definitively bad for your mental health :)

But it's still important to know what an interrupt or a pointer is, and to know enough about memory management, even if your programming language takes care of all that for you.

It's a bit of a catch-22 isn't it? start with ASM or C and risk having your mind poisoned against OOP, and start with a high level language, and risk not ever wanting to learn about lower level concepts.

Perhaps in the end it doesn't matter what you start with, and experience is the only thing that counts.

There's too many opinions on what's good or bad out there, and they all have some validity.

f0dder

  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 9,029
  • [Well, THAT escalated quickly!]
    • View Profile
    • f0dder's place
    • Read more about this member.
    • Donate to Member
Re: Programming in the Linux operating system: where to start?
« Reply #26 on: April 11, 2008, 05:12:23 PM »
Quote from: Gothi[c]
But it's still important to know what an interrupt or a pointer is, and to know enough about memory management, even if your programming language takes care of all that for you.
Most programmers don't need to know about interrupts or much other machine architecture, really - it's pretty irrelevant if you're doing web apps or database clients, etc. Heck, even in native C++ you can go a long way without needing to use (or at least know much about) pointers.

But it all depends on what you want to do as a programmer. I personally see a lot of value in learning about machine architecture, but I don't necessarily think it's the best place to start. Personally, I think getting the big perspective, focusing on logic etc., is a better place to start, so you don't get lost in the nitty gritty details...

Quote from: Gothi[c]
Perhaps in the end it doesn't matter what you start with, and experience is the only thing that counts.
I agree more or less with you here - and I'd like to add curiosity to the mix. Stay curious and willing to learn, that's what counts. I do believe that it's not entirely irrelevant how you start your programming adventure; BASIC can have permanent damaging effects to innocent souls ;)
- carpe noctem

Armando

  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 2,727
    • View Profile
    • Donate to Member
Re: Programming in the Linux operating system: where to start?
« Reply #27 on: April 11, 2008, 05:19:32 PM »
And thinking also of eventual paid jobs (not that I'm even thinking of getting paid doing that -- just mentioning) -- I imagine that knowing certain languages will allow one to fit better in the current programming... errrr... "economic ecosystem"?

Gothi[c]

  • DC Server Admin
  • Charter Honorary Member
  • Joined in 2006
  • ***
  • Posts: 858
    • View Profile
    • linkerror
    • Donate to Member
Re: Programming in the Linux operating system: where to start?
« Reply #28 on: April 12, 2008, 01:04:43 AM »
Quote
it's pretty irrelevant if you're doing web apps or database clients, etc. Heck, even in native C++ you can go a long way without needing to use (or at least know much about) pointers.

It's indeed not needed for web apps, but then I never really considered that programming... more like scripting :)

I think it's a really bad idea to do any serious C++ programming, or even VB programming without knowledge of memory usage, pointers, interrupts and the general ways a computer really works.

It is true you can go a very very long way without knowing any of this stuff. You could build a whole career as a programmer without knowing any of it.

But it would be a very very bad thing imo. Knowing as much as possible is always better. Knowing something about the code your compiler produces will definitively help you at some point.

Saying asm or C is like old stuff nobody should know, is like saying nobody needs to know world history, or saying you don't need to know geography. Pleny of people can lead perfectly good lives without knowing anything about the world they live in. But it's really sad for example when only 37% of Americans can locate Iraq on a map, while they are at war with it. It's the same thing really.

housetier

  • Charter Honorary Member
  • Joined in 2005
  • ***
  • default avatar
  • Posts: 1,321
    • View Profile
    • Donate to Member
Re: Programming in the Linux operating system: where to start?
« Reply #29 on: April 14, 2008, 06:33:32 AM »
But where do you stop starting: Do you need to know the layout of the circuits in the processors; what about hardware bugs (F00F or whatever). Curiosity can be drowned in details, so I would suggest starting with something neither too lowlevel nor too highlevel. Then, if curiosity still prevails, one can explore further down and up.

I agree that a certain knowledge of the underlying hardware is good to have, as is knowledge about highlevel concepts such as OOP or AOP. But starting somewhere in the (golden) middle seems best imo.

Edvard

  • Coding Snacks Author
  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 2,888
    • View Profile
    • Donate to Member
Re: Programming in the Linux operating system: where to start?
« Reply #30 on: May 13, 2008, 07:36:25 PM »
Quote
BASIC can have permanent damaging effects to innocent souls
Yours truly = living proof ;D (I still say "string" in my head when I see the $ symbol...)

Seriously, I was just on the DC IRC channel discussing this very thing.

There's a lot of talk of people who have hit the ceiling of what C++ is capable of and where it's going (besides MS development of it slowing almost to a stop...), and the new platforms (C#, .Net, Silverlight, etc.) are pumping in fresh blood to old ideas.
C is still a big cornerstone of the foundation, and the Mac OSX crowd has adopted Objective-C as it's language of choice. Python came out the clear winner in the "most popular scripting language" category (see the link at this thread) and Perl continues to be an elephant in the parlor (see below).

But I think Housetier phrased it well: "Where do you stop starting?"
When do you stop surveying diving boards and eventually jump in the f'ing pool?

I love and know Linux and am VERY curious about lots of programming languages. I've done a bit of research on the job market for the Linux-savvy, and it looks VERY promising. I would also like a better job...

So I've come up with a game plan:
1- Read enough about C/C++ to gain a conversational knowledge of it, if not the ability to code a thing or two. I'd like to know what a "stack pointer" is before I go popping my mouth off about it, and if I learn enough, maybe I'll even contribute to an open-source project just for the street cred.
2- Learn Perl. Why? Because despite the rising popularity of Python, Perl devs are still in great demand (look on http://www.indeed.com and compare "perl" results with "python") and I have a family to feed. Besides, it's a wonderfully powerful tool (especially on Unix/BSD/Linux), it's object-oriented and massively extendable. Besides, Perl 6 is coming (albeit slowly), and it looks big.
Even though it's developed in Haskell. :huh:
3- Move to Python and Mono. I think that more "average Joe" Linux development is going to move to Python, and the Windows ex-patriates are going to be feeding at the Mono trough. That may even be where the money is going and I'd like to be ready if that wave breaks.

That's my  :two:
 
« Last Edit: May 13, 2008, 07:41:14 PM by Edvard »

f0dder

  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 9,029
  • [Well, THAT escalated quickly!]
    • View Profile
    • f0dder's place
    • Read more about this member.
    • Donate to Member
Re: Programming in the Linux operating system: where to start?
« Reply #31 on: May 13, 2008, 07:47:36 PM »
There's a lot of talk of people who have hit the ceiling of what C++ is capable of and where it's going (besides MS development of it slowing almost to a stop...)
Hm, MS development of C++ slowing to a stop? They've enhanced the compilers with every version including vs2008, they've added a work in progress C++0x expansion pack, etc...

Also, I daresay it's only in the most recent years people are beginning to really harness the power of the C++ language :)

Not implying it's the one-and-only language to learn, since that would be silly, but I still see it as something with a great many years to live.
- carpe noctem

Edvard

  • Coding Snacks Author
  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 2,888
    • View Profile
    • Donate to Member
Re: Programming in the Linux operating system: where to start?
« Reply #32 on: May 13, 2008, 07:54:10 PM »
Ah f0dder, I knew I could count on you to cut through the hearsay...

Yes, that was what I heard was that MS was concentrating so much on the "new" things that not much has been added to the C++ convention, but maybe it just doesn't need that much added to it?
I would agree that it still has a lot of life left, but how long?
Just as there was slow and subtle shift away from ASM and C, there is a (slow and subtle...) shift away from C++ and Java that is happening NOW.
That doesn't mean that it won't be used or even usable beyond the foreseeable future, but the focus of activity will be elsewhere and that's what I'm attempting to look ahead to...
« Last Edit: May 13, 2008, 07:56:46 PM by Edvard »

f0dder

  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 9,029
  • [Well, THAT escalated quickly!]
    • View Profile
    • f0dder's place
    • Read more about this member.
    • Donate to Member
Re: Programming in the Linux operating system: where to start?
« Reply #33 on: May 13, 2008, 08:08:01 PM »
Well, they're probably spending more resources on things like c# and the like, but imho that's at least partially because the dotNET languages are still relatively new and developing, especially the platform as a whole, with all the libraries. On the other hand, C++ is somewhat more of a static target, although C++0x will change that - and still just about every C++ compiler has some conformance bugs etc.

ASM is still being used too, and it won't go entirely away either, but it's been pushed mostly to (the relatively low-end) embedded stuff, to where you need to squeeze out every last drop of performance, and to hobbyists... not like back in the early 1990'es where many apps needed at least some assembly here and there to maintain decent performance. Even though compiler intrinsics for the fancy instruction sets have gotten better, even I can usually beat the output with hand-crafted assembly - and I'm by no means an optimization expert.

Imho it should be forbidden to write web-facing stuff in C, especially if you insist on using str* function and manual malloc/free :)
- carpe noctem