|
Prev: looking for design patterns of interacting state machine
Next: Passing a lot of parameters in constructor?
From: arnuld on 26 Feb 2007 09:42 > On Feb 26, 7:34 pm, "arnuld" <geek.arn...(a)gmail.com> wrote: > > --- Nick Malik [Microsoft] > > you did not tell me why you use that devil inside brackets. seems like > you work with him. > SORRY, really very sorry, i overlooked your reply. -- arnuld http://arnuld.blogspot.com
From: arnuld on 26 Feb 2007 09:52 > On Feb 26, 3:04 pm, "Nick Malik [Microsoft]" <nickma...(a)hotmail.nospam.com> wrote: > 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. your earlier post did *not* mean that. trust me, this wording seems like totally different from what you said earlier. > > 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. BEST advise i have ever heard :-) > > 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. i am not a complete novice and i do understand what Jerry meant. you can check my BLOG and read my writings but i agree with you Malik, a novice can not understand this question. > 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.' this i what is said, your replies are not so much clear, to me at least. > 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. what do you mean by "from outside" or "you can't that call from outside" ? i really did not get that. -- arnuld http://arnuld/blogspot.com
From: arnuld on 26 Feb 2007 10:18 > On Feb 26, 2:40 pm, "Nick Malik [Microsoft]" <nickma...(a)hotmail.nospam.com> wrote: > "arnuld" <geek.arn...(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 :-) > 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. > WOW, what a good and clear explanation Malik. i am impressed ;-) > No, actually, Microsoft hired the best and brightest minds from industry i know. even Joel worked there. > 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. prejudice, vitriol...... Malik, you totally miss the point. read again > 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/ i love Lisp, UNIX way, design of HURD and the ideas and thoughts involved in the construction of EROS and Mercury projects. [1] Bill Gates is *extremely* brilliant at brand-development and *extremely- poor* when it comes to delivering a technically good product. > 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 is good and you do not need "devil in brackets" to prove your honesty. the "Disclaimer text" is enough. > 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. OOPS!, i thought you were 29 > Monster.com, Dice.com ... there are dozens of sites. > > Salary survey on dice is usefulhttp://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 dice.com is an american web-site. monster.com is too. "monsterindia.com" is for Indians. i am damn sure,as a fresher, no matter how excellent, no company will provide me a VISA. so i am better taking a chance at web-site like monsterindia, naukri and clickjobs. BTW, i *really* appreciate your helping nature. a busy man, taking out his personal time to find jobs for a man he doe snot even know. thanks a lot :-) > 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 do not have love-affair with OO but i do have love-affair with Lisp, Haskell & HURD. [2] > > 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. NO, you are in USA i guess, situation is very different here. -- arnuld http://arnuld.blogspot.com [1] http://www.gnu.org/software/hurd/hurd-paper.html http://coyotos.org/docs/osverify-2004/osverify-2004.html http://www.cs.mu.oz.au/research/mercury/ [2] http://www.haskell.org/haskellwiki/Haskell
From: Jerry Coffin on 27 Feb 2007 01:32 In article <UJudnYXS3JlIN3_YnZ2dnUVZ_sGqnZ2d(a)comcast.com>, nickmalik(a)hotmail.nospam.com says... [ ... ] > 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. That depends a lot on where you draw the line between procedural and otherwise. For example, in AWK, that might come out something like: /$2=="DBT"/ { print $1, $2, $3; } > 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. Regardless of a few corner cases like the one above, this strikes me as almost entirely true -- the only reason for the "almost" being that in some cases, people practice a language without ever quite seeming to use it elegantly. I've lost count of the number of people I've seen that could manage, by hook or by crook, to write Lisp that looked like a cross between FORTRAN and the measles... :-) > 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. Not nearly enough, IMO. In particular, while many require learning of more than one language, they make it all too easy to learn a number of languages that are so similar that there's no real difference -- minor differences in syntax, but nothing much more fundamental. [ ... ] > 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/ This appears to deal only with a single, rather narrow, class of problems -- and offhand, I can't see much about it that relates to the language proper. In fact, it looks like there's virtually no difference between one .NET language and another for the tasks being discussed. Much like the situation mentioned above, we're really only talking about minor differences in syntax, not much that's deeper. [ ... ] > 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. Upon what basis do you consider this a given? -- Later, Jerry. The universe is a figment of its own imagination.
From: Jerry Coffin on 27 Feb 2007 01:32
In article <9ZidnQPlUqM9LX_YnZ2dnUVZ_hGdnZ2d(a)comcast.com>, nickmalik(a)hotmail.nospam.com says... [ ...talking about 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. That neither 1) surprises, nor 2) impresses me. Except for "non- portable", the description above would apply equally to Java. > I guess it's only slow when Java developers write C# code... > http://www.gotdotnet.com/team/compare/nileperf.aspx Using Java as a comparison tends (at least to me) to indicate that it really is slow, and probably just as unavoidably as Java is. [ ... ] > > 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)? I never said anything was wrong, and I'll openly admit that I may have misintepreted what you said. At the same time, do you think my interpretation was unreasonable, given what you said (and, perhaps even more, what you didn't say)? [ ... ] > 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. I can't say that I agree. For one thing, I think ego (or something on that order) often what drives people to become really good at what they do. While it's true that there are a few extremely humble people who are extremely good, my experience has been that for _most_, becoming good was largely a matter of putting in a lot of time and effort. For most, the real justification was simply that they wanted to be that good. I'm pretty sure for most people if the idea is to get maximum return for minimum effort, programming is almost always a pretty poor choice. [ ... ] > You really didn't understand my advice, did you? I'm certainly willing to take your word that I misunderstood it -- rereading what you said, I don't think my interpretation was unreasonable, but that's really a different question. [ ... ] > 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. While I can certainly see your point, I can't say I entirely agree. In fact, I've tended to do rather the opposite: I explored first, on my own, and when I was reasonably certain what I wanted to do, found somebody who'd pay me to do that. I may have just gotten lucky on at least some ocassions though. My current job, in particular, has allowed me to continue exploring things I found fascinating before I started here. It probably helps, however, that I was employee #3 and the first "software guy". Instead of finding something inside that I'd enjoy, I built the inside out of things I already enjoyed. The fortunate part was finding customers who found it useful enough that somewhere around 14 years later, I still get to spend at least part of my time doing interesting things (though I'm afraid I also spend a lot more time in meetings and such than I did when I started...) -- Later, Jerry. The universe is a figment of its own imagination. |