From: Nick Malik [Microsoft] on
"arnuld" <geek.arnuld(a)gmail.com> wrote in message
news:1171206968.805646.45650(a)s48g2000cws.googlegroups.com...
> hai all,
>
> 1st of all, thanks for the replies, to my earlier post, and now with
> your help (the comp.object folks :-) the confusion has gone, i am
> very clear on my goals but still i have some difficulties. i will be
> brief:
>
> i do understand the meaning of variables,objects,function as i have
> done some Lisp, so i can say i am not a complete newbie.

Lisp is not exactly the most common starting place. It is not procedural,
and most of the 'problems' that can be solved with OO 'solutions' are
problems that are most typically seen in procedural approaches to problems:
to whit: functional decomposition. Therefore, to move to an OO solution,
you are going to have to learn something procedural. It is a prerequisite.

> yes, i have
> written some trivial programes too and i can understand books written
> for programmers (like Programming Ruby) but cannot understand books
> written for for much experienced programmers (like Stroustrup's TC++PL
> 3/e). since i have never done any professional coding at some company
> so i consider myself a beginner.i want to go directly to OOD (without
> learning any anything else like procedural paradigm or algorithms).
>
> Is this right way?

Don't think it is possible. It's like jumping to physician without a firm
understanding of biology and organic chemistry. You'd make a pretty weak OO
programmer if you couldn't see the solution in the procedural paradigm as
well as the OO paradigm. Honestly, there are times (frequently) when
encapsulation = overkill. If you don't have firm chops in procedural
development, you can't see your alternatives.


>
> i will be looking for a job using C++ but searching the archives of
> this newsgroup tells me that is not a good idea. hence, is it OK to
> go to through path:
>
> OOA-D -> OOP using Eiffel/Ruby -> C++
>
> ?

I'm a little biased on this point. I think you dump C++ completely. Go to
C# (oh, OK, you could go to Java too ;-). I'm sure there are a lot of jobs
in other languages, but the last time I checked, the most common languages
for hiring new developers into the field were in established places like C#
and Java. (Learning either will help with the other... double your
chances... learn both).

Once you are in the field and working for a few years, find your 'up and
coming' language and move. I think Ruby on Rails is pretty cool, as is
Python. Your career won't be defined by a programming language. In fact,
I'd be surprised if you wrote code in the same language for more than a few
years before switching to another one. It happens all the time.

--
--- Nick Malik [Microsoft]
MCSD, CFPS, Certified Scrummaster
http://blogs.msdn.com/nickmalik

Disclaimer: Opinions expressed in this forum are my own, and not
representative of my employer.
I do not answer questions on behalf of my employer. I'm just a
programmer helping programmers.
--


From: arnuld on
> Lisp is not exactly the most common starting place.

i know and it does not mean that it should not be. heard of SCHEME ?

> It is not procedural,
> and most of the 'problems' that can be solved with OO 'solutions' are
> problems that are most typically seen in procedural approaches to problems:
> to whit: functional decomposition. Therefore, to move to an OO solution,
> you are going to have to learn something procedural. It is a prerequisite.

i did not get it


> > OOA-D -> OOP using Eiffel/Ruby -> C++
>
> > ?
>
> I'm a little biased on this point. I think you dump C++ completely. Go to
> C# (oh, OK, you could go to Java too ;-).

i guessed it earlier. NO, i am really tankful for you read my post
and C# comes from house of Microsoft, best known for producing 3rd
class software. i can guess he (Bill Gates) must have ordered his
employees to create a technically disgusting beast out of C and C++

remember i am not speaking against your advice, HECK i don even know
why you have named your self "Nick Malik [Microsoft] " rather than
"Nick Malik"

> I'm sure there are a lot of jobs
> in other languages, but the last time I checked, the most common languages
> for hiring new developers into the field were in established places like C#
> and Java. (Learning either will help with the other... double your
> chances... learn both).

when you searched for last time? and where ? what keywords you use ?


i am searching right now for jobs in India with Keywords C++ and Java.
majority of jobs are for programmers carrying either: C++ or Java (in
both cases, along with OOA-D and who can comprehend at least half of
DPs)

i see C# & .NET programmers belong to just 20% of the jobs here. e.g
try "monsterindia.com".


> Your career won't be defined by a programming language.

i agree, 100%

> In fact,
> I'd be surprised if you wrote code in the same language for more than a few
> years before switching to another one. It happens all the time.

:-)


-- arnuld
http://arnuld.blogspot.com

From: Jerry Coffin on
In article <1171984613.342790.314680(a)v45g2000cwv.googlegroups.com>,
geek.arnuld(a)gmail.com says...
> > Lisp is not exactly the most common starting place.
>
> i know and it does not mean that it should not be. heard of SCHEME ?

No, but I've heard of (and used) Scheme. The name "Scheme" is not an
acronym, so there's no need for full caps -- IIRC, it's actually derived
from "Schemer".

[ ... ]

> > I'm a little biased on this point. I think you dump C++ completely. Go to
> > C# (oh, OK, you could go to Java too ;-).
>
> i guessed it earlier. NO, i am really tankful for you read my post
> and C# comes from house of Microsoft, best known for producing 3rd
> class software. i can guess he (Bill Gates) must have ordered his
> employees to create a technically disgusting beast out of C and C++

In fairness to MS, while I'm not particularly impressed with their
business practices, _some_ of their software is actually pretty good. As
far as C# goes, at least from my perspective, it looks much closer to
Java than either C or C++.

As languages go, from a theoretical viewpoint, it's not a bad language;
in fact, quite a substantial improvement over Java. OTOH, from a
practical viewpoint, it's slow, mostly non-portable, and aimed almost
exclusively at a fairly narrow range of applications.

[ ... ]

> > I'm sure there are a lot of jobs
> > in other languages, but the last time I checked, the most common languages
> > for hiring new developers into the field were in established places like C#
> > and Java. (Learning either will help with the other... double your
> > chances... learn both).
>
> when you searched for last time? and where ? what keywords you use ?

Learning both C# and Java is a silly waste of time, IMO. The idea of
doubling your chances is equally foolish. You should start by deciding
what kinds of problems you want to solve, and learn things that help you
solve those particular problems. At least from what I've seen, despite
their theoretical similarities, there's comparatively little overlap
between the uses to which C# and Java are put, so learning both won't
get you much closer to doing what you want to do. If you simply want a
fallback and don't care whether you enjoy it, you're almost certainly
better off diversifying quite a bit more, and studying something like
carpentry.

[ ... ]

> > Your career won't be defined by a programming language.
>
> i agree, 100%
>
> > In fact,
> > I'd be surprised if you wrote code in the same language for more than a few
> > years before switching to another one. It happens all the time.
>
> :-)

It seems to me that Mr. Malik has used excellent reasoning to reach
exactly the opposite of the correct conslusion. No, neither you, your
programming, nor your career should be defined by a language. In fact,
languages are of only limited consequence in programming. While there
are specialized languages that offer considerable advantages in specific
areas, most of programming is about figuring out how to solve problems
well, and quite a few languages are entirely sufficient for expressing
good solutions quite nicely.

There is a wide range of choices as to how to approach programming. Mr.
Malik's advice is basically at one extreme: to go with the latest fad,
and plan to learn new languages as they become the latest fad. This is a
reasonable route for a lot of people. The latest fad makes great resume
filler and nearly guarantees that you'll be able to find a job, even if
(in all honesty) you're not really a particularly great programmer.
Chances are that you won't get really great jobs, but you never know --
sometimes you might. You'll have moved on to two new languages and three
new jobs before your employer figures out that you really weren't very
good.

My advice tends toward the opposite extreme: think hard about what you
really _want_ to do. As Mr. Malik implied, there's not really a
tremendous difference between one language and another -- but there IS a
tremendous difference between one programmer and another. Learning the
latest and greatest language really won't suddenly make you a lot
smarter or more productive or in any other way a drastically better
programmer. Learning to use a language really _well_, however, really
will make you considerably more productive.

Your choices should be based on a few factors. First and foremost, how
good of a programmer do you really think you can become? Programmers
seem to fit the bell curve fairly well -- most of them are pretty close
to average, and about half are below average. If you fall into that
category, chances are that (especially from a career viewpoint) you're
better off taking Mr. Malik's advice -- despite involving moving from
job to job semi-regularly, it really is a fairly safe route. Moving with
a large pack makes it easier to cover for mediocrity (and the fact that
the language is new means that virtually nobody can really even ask that
anybody really use it well).

If, however, you can honestly claim that you're likely to become a
really good programmer, you can make your OWN choices about most other
things: what language(s) do you like, what kinds of problems do you like
to solve, and so on. If you really are good, you can usually make your
own choices as long as they don't conflict much and neither is extremely
obscure (e.g. scientific programming in Self), chances are you can do
what YOU want, instead of spending your time worrying about whether that
particular niche is 20% or only 1% of the current job market.

As far as C++, specifically, goes: it continues to be used, and if you
learn it well, you'll almost certainly be able to feed your children.
While there are certainly situations where C++ is far from ideal and
Java or C# is better, there are also situations where C++ excels, and
neither Java nor C# is particularly competitive. I haven't seen you post
enough about your aims to give anybody a basis for an honest
recommendation of one over another.

--
Later,
Jerry.

The universe is a figment of its own imagination.
From: arnuld on
> > i know and it does not mean that it should not be. heard of SCHEME ?
>
> No, but I've heard of (and used) Scheme. The name "Scheme" is not an
> acronym, so there's no need for full caps

ok, sorry. it is Scheme, i got it.


> As languages go, from a theoretical viewpoint, it's not a bad language;
> in fact, quite a substantial improvement over Java. OTOH, from a
> practical viewpoint, it's slow, mostly non-portable, and aimed almost
> exclusively at a fairly narrow range of applications.

this i what *exactly* i meant.


> > when you searched for last time? and where ? what keywords you use ?
>
> Learning both C# and Java is a silly waste of time, IMO. The idea of
> doubling your chances is equally foolish.

again, this i what i meant.


> You should start by deciding
> what kinds of problems you want to solve, and learn things that help you
> solve those particular problems.


the problem is *job* or "contact based programming work", that is why,
i chose C++ and no employer wants a C++ developer without strong OOD &
DPs or Software Design concepts.


> If you simply want a
> fallback and don't care whether you enjoy it, you're almost certainly
> better off diversifying quite a bit more, and studying something like
> carpentry.

yes, you are right, earlier, i wanted to make money only and i was
"selling loans and water purifiers", then i entered into programming
as i never liked "selling". i do not want to be get bored by my work,
hence i want to make money by doing programming. additionally, i want
to create some products with my skill so that they remain useful to
this world when i will be gone. it is just that i love Hacking like i
love Martial-Arts, Hollywood movies & SF. i do not find any logic of
this love, i just love it, reading about Hacker culture, Open Sources:
voices from open source revolution, Free Softwares Free Society,
Hiring is Obsolete, the man who sold the moon, gigamonkeys, HURD &
coyotos design & playing with CLISP interpreter and watching how Bruce
Lee *creates* his own Fighting style just after 5 minutes of fighting
with a Wing-Chun expert.


may be i am too young or too stupid to find the logic of this love. i
don't know and can't say.


> It seems to me that Mr. Malik has used excellent reasoning to reach
> exactly the opposite of the correct conslusion. No, neither you, your
> programming, nor your career should be defined by a language. In fact,
> languages are of only limited consequence in programming. While there
> are specialized languages that offer considerable advantages in specific
> areas, most of programming is about figuring out how to solve problems
> well, and quite a few languages are entirely sufficient for expressing
> good solutions quite nicely.

so, i guess, corporate wants to solve some problems using C++ as a
vehicle.


> My advice tends toward the opposite extreme: think hard about what you
> really _want_ to do.

i want to make money, by doing Hacking, whether at a "job" or by doing
"contract based work", to be exact.


> If, however, you can honestly claim that you're likely to become a
> really good programmer,

i know that i *can* become an excellent Hacker. i have not said that i
can become a good Software Engineer, can not say anything about this
BUT i am very sure that i can become an excellent Hacker.


> you can make your OWN choices about most other
> things: what language(s) do you like, what kinds of problems do you like
> to solve, and so on. If you really are good, you can usually make your
> own choices as long as they don't conflict much and neither is extremely
> obscure (e.g. scientific programming in Self), chances are you can do
> what YOU want, instead of spending your time worrying about whether that
> particular niche is 20% or only 1% of the current job market.


you are saying, if i choose my OWN language and learn some programming
paradigms with it then i do not need to care about this 20% and 1% job
market

?

personally i like Lisp, Haskell and a bit inclined towards Mercury [1]
and OCaml too [2]. i like C because, to me, it feels like an important
part of Hacking.


> As far as C++, specifically, goes: it continues to be used, and if you
> learn it well, you'll almost certainly be able to feed your children.


i knew that but it is good to hear from your side :-)


> I haven't seen you post
> enough about your aims to give anybody a basis for an honest
> recommendation of one over another.

Jerry, i did not get that. i have posted enough i think. but you know
better,a s you are on the other side. may be i need to read "How to
ask smart questions" by ESR

> The universe is a figment of its own imagination.

what does that mean ?


-- arnuld
http://arnuld.blogpsot.com

[1] http://www.cs.mu.oz.au/research/mercury/
[2] http://caml.inria.fr/

From: Jerry Coffin on
In article <1172039763.430072.84580(a)v33g2000cwv.googlegroups.com>,
geek.arnuld(a)gmail.com says...

[ ... ]

> the problem is *job* or "contact based programming work", that is why,
> i chose C++ and no employer wants a C++ developer without strong OOD &
> DPs or Software Design concepts.

I can't blame them -- a language is simply a way of expressing a design.
The design is what's really important though -- and unless you know how
to desgn well, knowing the language (and language) well isn't worth
much.

[ ... ]

> i want to make money, by doing Hacking, whether at a "job" or by doing
> "contract based work", to be exact.

Yes, but exactly what _kind_ of hacking? What have you enjoyed and what
have you found that you're good at? Code varies from low-level device
drivers that work directly with the hardware to things like distributed
databases that work with almost pure abstractions, removed from the
hardware by several (dozen) layers of code. There are (of course)
various levels in between, as well as simply different types of subject
matter at more or less the same level.

In addition to that, there are various different kinds of systems --
I've worked with CPUs all the way from mainframes that required a fork-
lift to move anything and had several tons of air-conditioning
equipment, down to miniscule microcontrollers with a total of 128 bytes
(no, not megabytes or even kilobytes, but just BYTES) of RAM. There are
some kinds of programming I like a lot, and others I find downright
boring. Chances are you're the same way, but you're not yet sure what
things you'll find interesting or boring in the long term.

[ ... ]

> you are saying, if i choose my OWN language and learn some programming
> paradigms with it then i do not need to care about this 20% and 1% job
> market
>
> ?

More or less -- the trick is to get _really_ good at what you decide to
do.

> personally i like Lisp, Haskell and a bit inclined towards Mercury [1]
> and OCaml too [2]. i like C because, to me, it feels like an important
> part of Hacking.

Well, I will say this: the closer you stay to the mainstream, the more
room there is for being average. Conversely, if you decide to specialize
in something obscure, you're going to have to be better at it to make
any money -- and the more obscure it is, better you need to be.

[ ... ]

> Jerry, i did not get that. i have posted enough i think. but you know
> better,a s you are on the other side. may be i need to read "How to
> ask smart questions" by ESR

In this case, it's more a matter of a question only you can really
answer -- early on, it's perfectly reasonable to do a lot of exploring
to find what you like and what you're good at. Once you've found that,
it's at least possible to decide to specialize more -- even if you don't
pick too narrow a specialty, you can work in reverse, avoiding things
you really don't like.

> > The universe is a figment of its own imagination.
>
> what does that mean ?

Good question! :-) It's just a statement I happen to like -- and now
I've used it as a tag-line so long, somebody would probably wonder what
aliens had kidnapped me if I used something else.

--
Later,
Jerry.

The universe is a figment of its own imagination.