|
Prev: looking for design patterns of interacting state machine
Next: Passing a lot of parameters in constructor?
From: Nick Malik [Microsoft] on 19 Feb 2007 04:27 "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 20 Feb 2007 10:16 > 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 20 Feb 2007 23:10 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 21 Feb 2007 01:36 > > 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 23 Feb 2007 00:31
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. |