Date: Sun, 11 Mar 2001 15:35:31 -0600 From: Mike Meyer <mwm@mired.org> To: Joe Warner <rootman@xmission.com>, Brad Knowles <brad.knowles@skynet.be> Cc: <freebsd-chat@FreeBSD.ORG> Subject: Re: Looking for Yoda Message-ID: <15019.61347.106065.498844@guru.mired.org> In-Reply-To: <01031108370900.00256@blackmirror.xmission.com> References: <20010310230724.A292@sprig.tougas.net> <000601c0a9f9$31b88120$103b7c18@palisor.yi.org> <xzp1ys4v3iv.fsf@flood.ping.uio.no> <v04220805b6d1796cec93@[194.78.241.123]> <01031108370900.00256@blackmirror.xmission.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Joe Warner <rootman@xmission.com> types: > Ok, I'm jumping in on this one.. > Most of those with programming experience I have talked to have recommended I > start with C but didn't provide clear explanations as to why. They're probably thinking that it's the one that will be most useful over the long run. For instance, the only other programming languages included in FreeBSD by default are Perl and the assembler, both of which are used as part of the kernel build. [Yes, I know I'm ignoring sh, sed, awk, etc.] The downside to C as first language is the complete lack of any kind of training wheels. There are all kinds of errors that you stop making and typically instantly recognize with experience that C won't help you find, but other languages either prevent, or catch and tell you about. Things like uninitialized variables, reusing freed memory and bad pointers. Trying to learn the fundamentals of programming while dealing with this stuff is a load. Not impossible to deal with, but it is avoidable. > I understand that if you learn C, then most other object oriented languages > will be easier to learn. Can't I start with, say Python? I've read a lot of > exciting things this language can do and that it's been gaining a lot of recent > popularity. No reason not to - except the popularity issue. It's not part of the FreeBSD base system, and it's hard to find work writing python; it's easier to find work where you can write whatever you want. Personally, I like it and write a lot of it. > When I decide upon a language, where should I start? With books? College > courses? Both? Whichever is more comfortable for you. If you start with books, you'll want to chose some that have exercises, and make sure you do them - that's the project for you. > For me, programming has always seemed like this obscure/unreachable plateau > populated by members of a secret society of gurus that speak their own language. > Kind of like the stock market and it's traders and analysts. 8^) If you decide you want to use Python and books, drop me a note offline. Brad Knowles <brad.knowles@skynet.be> types: > At 2:28 PM +0100 3/11/01, Dag-Erling Smorgrav wrote: > > Lucky for you, we have a whole batch of projects just waiting for > > someone to work on them: > > > > http://www.FreeBSD.org/cgi/query-pr-summary.cgi > > > > They're not all really that hard. Many of them can probably be closed > > without any more action than verifying the bug they report no longer > > exists, or never existed in the first place. > > The problem with these PRs is that they assume you're already an > experienced programmer, and that you understand the context in which > the patch is being made. Unfortunately, those two things are > precisely what programmers new to C almost certainly don't have. > Even if they're otherwise experienced programmers, simply dumping > them in the deep end of the ocean and telling them to "sink or swim" > is likely to end up with most of them sinking fairly rapidly. After I learned programming in the first place, I've found debugging to be one of the easiest ways to get into another language. You don't have to deal with the bookkeeping involved in getting an application started, you probably don't have to worry about program design or anything like that. You have code in the language you're interested to examine that mostly meets a specification - all you have to do is figure out why it's different, and correct it. It's certainly better than being given a man page and told "write this". If you approach it correctly, debugging is the only skill you need to learn. Given a man page and being told to "write this", you find the program that does something close to what you want, and debug it. This does stretch the meaning of debugging to include fixing bugs like "needs feature X". At the extreme you can't find that program, so you start with a copy of /dev/null, and debug that. > > If you're looking for > > something more long-term, try this page: > > http://www.freebsd.org/projects/ > Moof! I looked at this page. There's all sorts of stuff here, > but it's things like the Ganger & Platt "softupdates" papers, the > page describing the vinum logical volume manager, a link to the page > for the Coda distributed filesystem, the pages describing the efforts > to port FreeBSD to Alpha, PowerPC, SPARC, and other hardware > platforms, etc.... You seem to have started at the hard stuff and not looked much further than that. There is also a list of applications that are being ported or developed. The most interesting - and most needed - of the latter is libh, which is a replacement for the install and package systems. That's got a noticably shallower learning curve than anything you mentioned. > Unfortunately, I didn't see a single thing here that would be > appropriate for an experienced programmer to use as their reason for > introducing themselves to C, or as a project that a a new programmer > could jump into and start programming for the first time. What you missed is that most - if not all - of these are *team* projects. If one of them looks interesting, you shouyld contact the project coordinator, and see if they have something for you to do. > Much better would be a page that had links to descriptions of > projects that have been envisaged by members of the FreeBSD project > as being necessary or desirable, but which have not yet been taken on > by someone, or where new programmers (or experienced programmers that > are new to C) would be able to jump in and start doing work. It think you just described the empty set. If something is envisioned by a team member as both desirable or necessary, *and* is simple enough that people with no C experience - or no programming experience - can obviously do it themselves, then the team member probably just *wrote* it. Here's an example. I want a tool that does what "pkg_version -c" does, with the addition that it rebuilds packages that require the out of date package as well. I've looked at it more than once, and have as yet to write a line of code. I think this meets your requirements, but when you get into it, there are some *nasty* headaches that I couldn't solve. The package system has changed since then, so the headaches I ran into may be gone. As a final note - failing FreeBSD directly, there are some sites that let people list projects they are willing to pay to have done. You might try looking at those. The problem is the same as the FreeBSD project, though - there are talented programmers considering the same projects, and anything simple enough for an inexperienced programmer has probably already been taken by one of them. <mike -- Mike Meyer <mwm@mired.org> http://www.mired.org/home/mwm/ Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-chat" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?15019.61347.106065.498844>