From: arnuld on
> On Feb 21, 9:10 am, Jerry Coffin <jcof...(a)taeus.com> wrote:
> In article <1171984613.342790.314...(a)v45g2000cwv.googlegroups.com>,
> geek.arn...(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".


> [..SNIP...]

> 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.

> [....SNIP....]

> 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.

Jerry, thanks a lot for your precious time. there is a tremendous
improvement over my thoughts and i think i have gone into right
direction. your words speak of "programming experience" and i have
accumulated your experience into my work.

i never thought that a simple advice to one of my friends, "pandit" -
the OP, will improve my existing programming base to such a larger
extent.

thanks again

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

From: Nick Malik [Microsoft] on
"arnuld" <geek.arnuld(a)gmail.com> wrote in message
news:1171984613.342790.314680(a)v45g2000cwv.googlegroups.com...
>> Lisp is not exactly the most common starting place.
>
> i know and it does not mean that it should not be. heard of SCHEME ?

I'm not going to argue if it was good or bad to start with Lisp. Just
different. Cool even. I like Lisp.
One of my favorite T-shirts was: My CAR ran over my CDR

>
>> 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

There are assumptions that form the foundations of understanding. It is how
knowledge is constructed. All knowledge, all philosophy, is based, at some
point, on assumptions. One set of assumptions that we make is the
representation of logic, another is the representation of information, and
another is the process by which problems will be solved. The last is often
the most fundamental, in that it drives much of the grammatical construction
of the language itself. The Lisp language assumes many things about the
programmer, including an inherent understanding of how to construct problems
in the form of lists, how to analyse data as lists, and how to express
solutions contrived from lists, including the list of programming
instructions themselves. The more typical von-neumann architecture
seperates data from instructions and assumes an approach not dissimilar to
the ones originally described by Aristotle. This approach is the one we now
refer to as functional decomposition and forms the cornerstone of procedural
software development. It is not the cornerstone of functional programming
or logic programming. The language is an expression of the assumptions on
which it is based.

Languages, inasmuch as they express thought, also mold it. It is far easier
to describe some problems in a particular language. The SQL statement
"SELECT row_id, type_code, type_name FROM tblTransactionType where type_code
= 'DBT'" is easy to express in SQL but would require quite a few more lines
of code to describe well in a procedural language if the data were stored in
a flat file. In the same sense that some concepts are best explained in one
language than another, it is true that practitioners of a language will more
quickly learn to express elegant ideas that the language is suited for. In
other words, not only does the language affect the length of the expression,
it also affects the practitioner. That is why it is imperative that new
developers learn multiple languages, and nearly every college teaching
computing science endeavors to insure it.

If your start is in Lisp, cudos. However, the problems faced by procedural
developers are solved, at least partially, by OO languages. Therefore, to
truly understand these solutions, and understand how they are elegant
solutions to a particular set of problems, you need to understand the
problems. You need to understand the procedural paradigm.

You cannot skip 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.

With all due respect, I beg to differ. Of course, you expected me to say
that. :-)

> i can guess he (Bill Gates) must have ordered his
> employees to create a technically disgusting beast out of C and C++

No, actually, Microsoft hired the best and brightest minds from industry and
they produced a language that is remarkably similar to Java and is heavily
influenced by the lessons learned by both Java and Delphi. I doubt that
Bill directed that strategy, although I'm certain he was aware of it and
approved of it. Not much is done in MSFT without him being aware of it. If
you had actually taken the time to write code in C# and then compared it to
Java, as millions of others have, I'd be interested in your comments about
the relative elegance of the languages. As it is, I can only chalk up your
comment to prejudice. It's a shame. There are some very honest,
intelligent, curious, and imaginative men and women working at Microsoft.
Please don't insult them. I know many of them. They do not deserve your
vitriole.

If you believe that C# is somehow disgusting, I urge you to actually do some
research from independent researchers to find out what languages are more
elegant, performant, or maintainable. Perhaps you can start here:
http://www.gotdotnet.com/team/compare/

>
> 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"

Because my employer asks me to be honest about my viewpoint. They do not
require it, nor could they regulate it. But they do ask. Just as a
reputable news organization will always reveal when they are reporting about
an organization that sponsors them, I consider it important that the people
who read my messages understand that I have a viewpoint that is colored by
my experience and the information to which I am exposed. I am being honest
with you.

That said, of my 25 years in software, only five has been spent working at
Microsoft. My viewpoint is enriched by working at Microsoft, but is not
limited to one company or technology. I've spent many years writing code in
Unix as well as OS/2. Even some time in embedded firmware.

>
>> 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 ?
>

Monster.com, Dice.com ... there are dozens of sites.

Salary survey on dice is useful
http://career-resources.dice.com/tech_salary_survey_06.shtml

Searching on Dice, I did a look up for Object Oriented (5891 hits). I wrote
down some of the technologies that I ran across, added a few that came to
mind, including some of the smaller ones for context (like LISP), and then
searched independently for them. Here's a table of resulting hits.

sql - 23650
java - 15870
c++ - 7960
c# - 6496
perl - 5241
VB - 2655
COBOL - 1283
python - 955
TCL - 391
Cold Fusion - 355
ruby - 350
Forth - 139
Smalltalk - 62
Prolog - 37
lisp - 35
PL/1 - 18

Clearly, from this list, JAVA is far and away the most popular object
oriented language in terms of open positions or current hiring. C++ is
second, and C# is close behind. C++, C#, and VB (the three primary
languages of the .Net platform) are roughly equal to the Java number. So,
I'd say they are comparable in some ways. Clearly, this data would
require a lot more analysis to be truly useful, but from the quick hit I
did, I think it is fair to say that the best bet, if you want to write in
OO, is to learn Java or one of the .Net languages (C++, C#, or VB). If you
don't have a love affair with OO, then SQL is clearly a good bet as well.

>
> 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".

Go with what works. Given that no one is investing much effort in new
developments for C++, all those C++ jobs may very well be maintainece
positions. If that's what you want, go for it.


--
--- 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: Nick Malik [Microsoft] on
"Jerry Coffin" <jcoffin(a)taeus.com> wrote in message
news:MPG.204573ff1ee0aa37989851(a)news.sunsite.dk...
> In article <1171984613.342790.314680(a)v45g2000cwv.googlegroups.com>,
> geek.arnuld(a)gmail.com says...
>
> 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.

Interesting. This study found that the .Net platform whipped the dickens
out of the Java platform in a scalable multiprocessor application server
environment. I guess it's only slow when Java developers write C# code...
http://www.gotdotnet.com/team/compare/nileperf.aspx


>
> 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.

Interesting interpretation of my words. Not sure where you got that. The
OP clearly asked about the OO language direction he should take. Was it
wrong to suggest Java (a 10+ year old, very well established language and
platform for multiple OS targets) or .Net (a slightly newer platform with
multiple languages for one one OS)?

When I said "Once you are in the field and working for a few years, find
your 'up and
coming' language and move." I meant that the OP shouldn't choose a language
that he cannot work in, hoping to get a first job. He should choose a good
language that he can get started in, and then, once working, if he wishes to
move, he can find HIS "preferred" language. In other words, take a good
choice, get started, and then, if you want to follow a more passionate or
more pure direction, do so with some experience under his belt.

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

Completely reasonable advice. However, when starting out, it is unlikely
that you will *get* to do what you *want* to do. It is good to have a goal,
but it is also good to work for a living and learn about your craft.

> 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.

Agreed.

> 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.

Agreed.

> Your choices should be based on a few factors. First and foremost, how
> good of a programmer do you really think you can become?

This is an utterly foolish question to ask a novice developer. With no
basis to make this decision, the answer can come only from self esteem,
which is a lousy indicator eventual productivity. I've seen truly cocky
developers screw up massively, and truly humble developers write thousands
of lines of fast, elegant, bug-free code. Neither could have answered that
question before writing the code, doing the work, and discovering their
strengths and weaknesses under pressure.

>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).

You really didn't understand my advice, did you? to be fair, perhaps I
could have been more clear, and I hope to be more clear in the future. I do
not recommend 'language hopping.'

Passion for your work matters. If you want to work, work. But if you want
to truly Love your work, you will need to go after the kind of work you want
to do. I believe we agree on this point. However, I don't believe you can
make that call from the outside looking in. I think you need to take a job
in a good language, get your grounding, and THEN look around. If language
is your passion, find the language you can love and go there. If an
application area is your passion, or project management, or testing, go
there... But don't try to decide from the outside. It's an absurd
proposition.


--
--- 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: Nick Malik [Microsoft] on
"Jerry Coffin" <jcoffin(a)taeus.com> wrote in message
news:MPG.20482a19d6cc9c3b989863(a)news.sunsite.dk...
> In article <1172039763.430072.84580(a)v33g2000cwv.googlegroups.com>,
> geek.arnuld(a)gmail.com says...
>
>> 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.

I ask you, Jerry, how our friend arnuld is supposed to become good at an
obscure language without first getting a job in development that requires at
least some exposure to software design and, ultimately, an opportunity to
work in that language?

<anecdote>
When I was starting out, I knew a fellow who chose an obscure language to
start with, and really stuck to his guns. You know what? After 10 years,
he finally got the opportunity to work, in a paid position, writing in
Forth. Fifteen years later, he's still writing in Forth. He hates it.
</anecdote>

>
>> 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.

and the harder it will be to get that first break.

> 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.

Good to see you come around to my original advice. Perhaps you were more
clear in reaching it... ? Hard for me to judge. I'm glad that both of us
ended up in the same place.


--
--- 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
> On Feb 26, 3:13 pm, "Nick Malik [Microsoft]" <nickma...(a)hotmail.nospam.com> wrote:
> "Jerry Coffin" <jcof...(a)taeus.com> wrote in message
>
> news:MPG.20482a19d6cc9c3b989863(a)news.sunsite.dk...
>
> > In article <1172039763.430072.84...(a)v33g2000cwv.googlegroups.com>,
> > geek.arn...(a)gmail.com says...
>
> >> 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.
>
> I ask you, Jerry, how our friend arnuld is supposed to become good at an
> obscure language without first getting a job in development that requires at
> least some exposure to software design and, ultimately, an opportunity to
> work in that language?

Jerry did not mean that. now, before i proceed further i need to tell
you this:

"a poster named "pandit" also posted a thread, nearly like this one i
posted, but a little different, on "comp.lang.c" and when it became OT
there, then on the advice of "comp.lang.c" folks, "pandit" (the OP)
continued that thread on "comp.programming". [1] i also posted there
and there are 3 men who helped me lot at these 3 places:

Jerry, Flash Gordon and Hallvard."

Of course others folks have also helped and these 3 persons hit the
point directly. after reading all of these posts. i came to this
conclusion:

1. i needed to think *HARD* on what i want to do.

i decided to become a _good_ programmer 1st and then taking
on a job route from there. so here i will choose language i like,
that way i do not need continuous motivation as it is will be my
favourite language [2]. the opposite route was not working.

2. i needed to think *HARD* on what kind of problems i like to solve
and what i am good at actually. i need to compare the two and make a
decision.


3. take the job route from here. (C++, OOA-D , DP, SW Engg. concepts)



> <anecdote>
> When I was starting out, I knew a fellow who chose an obscure language to
> start with, and really stuck to his guns. You know what? After 10 years,
> he finally got the opportunity to work, in a paid position, writing in
> Forth. Fifteen years later, he's still writing in Forth. He hates it.
> </anecdote>


Jerry is quite technical man. He advised to learn a language well,
_really_ well, and said 2 times that choosen language should not me
extremely obscure (like you said Malik)



> >> 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.
>
> and the harder it will be to get that first break.


yes, you are right.

> > 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.
>
> Good to see you come around to my original advice. Perhaps you were more
> clear in reaching it... ? Hard for me to judge. I'm glad that both of us
> ended up in the same place.

yes, Jerry was much clear on his points, my post did mean that :-)

[OT] BTW, "pandit" is my friend, he lives 100 KM away from my town, i
taught him some Common Lisp ;-) [/OT]


> --- Nick Malik [Microsoft]

you did not tell me why you use that devil inside brackets. seems like
you work with him.



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

[1] http://groups.google.com/group/comp.lang.c/browse_thread/thread/28b95f3aa171a9e2/4e174222fab111c0

http://groups.google.com/group/comp.programming/browse_thread/thread/b352d513c079f4ca/#

[2] this step, to be true, will be a compromise between "what i love"
and "what is the situation in job market", IFF i do not think of
starting a business. :-)