Re: [CODE4LIB] Advice on a class

2011-08-11 Thread Simon Spero
Sender: CODE4LIB@LISTSERV.ND.EDU
On-Behalf-Of: sesunc...@gmail.com
Subject: Re: [CODE4LIB] Advice on a class
Message-Id: cfd505f2-8dec-47e8-b0d3-b0bd0a759...@gmail.com
Recipient: jcost...@trinity.edu.test-google-a.com, Forwarded: 
jane.costa...@trinity.edu
Recipient: jdon...@trinity.edu.test-google-a.com, Forwarded: 
jeremy.don...@trinity.edu
---BeginMessage---

On Jul 27, 2011, at 10:32 PM, Bill Janssen wrote:

If I'm hiring a programmer, I want them to know C and Python.  [...]  
Various flavors of C are acceptable:  Objective-C is OK with me, and  
C++ is a plus -- it's an order of magnitude more difficult than C to  
use properly, and people who can sling it properly are rare.


I wouldn't say that C++ is an OOM harder than raw C to use properly;  
it just adds so many more ways to use it improperly, and templates are  
the work of the devil.   The problem with learning C++ is that it can  
be hard to predict what sort of code will be generated for very  
similar constructs, which is not a good thing for a low level  
language.  It's still always possible to fall back on C and inline  
assembler when you need it.


That's really the advantage of learning straight C as as low level  
language- it lets you see what sort of machine code corresponds to  
what sort of source code.  When combined with a good performance  
measuring suite you can get a much better feel for how different types  
of data access have completely different performance, what sort of  
things get optimized/vectorized cleanly, etc.  It also gives you an  
appreciation for how nice it is to be able to ignore these things most  
of the time  when using higher level languages.


Objective-C (counting the NS Foundation classes as part of the  
language) is a cleaner language, with a more dynamic object model;  
however, in current implementations the overhead of method calling is  
much too high, making the OO features only usable for relatively  
coarse grained methods. One thing that the Foundation classes show is  
how valuable it  can be to have long method names.


Additional languages which carry weight with me on a resume are  
OCaml, Processing, and any of Common Lisp, Scheme, or Clojure.


Did you mean Clozure?  The other two are kinds of lisp. :-P

Also, java should no more be considered in isolation from IntelliJ  
Idea that a lisp should be used without an emacs.


Simon
---End Message---


Re: [CODE4LIB] Advice on a class

2011-07-31 Thread Mark Cooper
Well, those are cute quotes and it's not difficult to find criticisms of any 
programming language online. But the point remains that you can write almost 
all of C within a C++ context, and in terms of learning fundamentals an 
introduction to programming with C++ is going to cover more relevant material 
for library programming purposes than a pure C class - you'll get some OOP, be 
spared explicit memory management (well, using 'new' instead of 'malloc') etc. 
All of which transitions more seamlessly to languages where the real action is 
in library terms - Java, Ruby, Python etc. because of the code libraries 
available (and look at the huge number of library / archives related projects 
written in PHP). Of course, this supposes that you're not aiming for systems 
level programming, in which case C/C++ would a typical choice (but certainly 
not for beginners). But if your only option is a class on C programming, and 
you've had no other low-level exposure, then I think it's worth it for the 
reasons others have mentioned.

Mark Cooper,
Sonoma County Library

On Sat, 30 Jul 2011 06:38:22 -0300, Luciano Ramalho 
luci...@ramalho.org wrote:

On Tue, Jul 26, 2011 at 4:18 PM, Genny Engel gen...@sonoma.lib.ca.us 
wrote:
 C++ might be a better choice if you want to start off with a grounding in 
object-oriented programming. �Or maybe Java. �I'm about to start the C++ 
course at the local junior college. �Which reminds me to mention, it probably 
doesn't matter which programming course you take right now -- if you then go 
through life taking more programming classes like I do!

Here are a few quotes from computer science notables about C++:

I invented the term Object-Oriented, and I can tell you I did not
have C++ in mind (Alan Kay)
There are only two things wrong with C++: The initial concept and the
implementation (Bertrand Meyer)
Whenever the C++ language designers had two competing ideas as to how
they should solve some problem, they said, 'OK, we'll do them both'.
So the language is too baroque for my taste (Donald E Knuth)

To really learn OOP, Ruby, Java, Python and particularly Smalltalk are
much better choices, IMHO. OK, you won't find much practical use for
Smalltalk, but neither for C++ in this day and age (not in a library
setting, anyway). And learning C then Smalltalk is a great path to
Objective-C, the main language used to program iPhones and iPads.

Putting aside the OOP issue, learning C is totally worthwhile as a
grounding for any other language. Its what C++ adds to C that is not
worth the trouble, as there are better alternatives.

Cheers,

--
Luciano Ramalho
programador repentista || stand-up programmer
Twitter: @luciano


Re: [CODE4LIB] Advice on a class

2011-07-30 Thread Madrigal, Juan A
It's always good to know C if you ever need to write an Apache module!

Juan Madrigal

Web Developer
University of Miami
Richter Library

On Jul 30, 2011, at 5:39 AM, Luciano Ramalho luci...@ramalho.org wrote:

 On Tue, Jul 26, 2011 at 4:18 PM, Genny Engel gen...@sonoma.lib.ca.us wrote:
 C++ might be a better choice if you want to start off with a grounding in 
 object-oriented programming.  Or maybe Java.  I'm about to start the C++ 
 course at the local junior college.  Which reminds me to mention, it 
 probably doesn't matter which programming course you take right now -- if 
 you then go through life taking more programming classes like I do!
 
 Here are a few quotes from computer science notables about C++:
 
 I invented the term Object-Oriented, and I can tell you I did not
 have C++ in mind (Alan Kay)
 There are only two things wrong with C++: The initial concept and the
 implementation (Bertrand Meyer)
 Whenever the C++ language designers had two competing ideas as to how
 they should solve some problem, they said, 'OK, we'll do them both'.
 So the language is too baroque for my taste (Donald E Knuth)
 
 To really learn OOP, Ruby, Java, Python and particularly Smalltalk are
 much better choices, IMHO. OK, you won't find much practical use for
 Smalltalk, but neither for C++ in this day and age (not in a library
 setting, anyway). And learning C then Smalltalk is a great path to
 Objective-C, the main language used to program iPhones and iPads.
 
 Putting aside the OOP issue, learning C is totally worthwhile as a
 grounding for any other language. Its what C++ adds to C that is not
 worth the trouble, as there are better alternatives.
 
 Cheers,
 
 -- 
 Luciano Ramalho
 programador repentista || stand-up programmer
 Twitter: @luciano


Re: [CODE4LIB] Advice on a class

2011-07-29 Thread Mike Taylor
On 29 July 2011 14:00, Cowles, Esme escow...@ucsd.edu wrote:
 I think most of the focus on C in this discussion is because that's what the 
 OP had available.  The consensus seems to be: C isn't the language you would 
 pick if you had your choice, but if that's what's available, it's a fine 
 language to use to learn the fundamentals, and you can learn the rest later.

Most important: learning a programming language is not the same thing
as learning to program.  If your course has a good teacher, then you
will learn to program, whatever the language.  Applying the concepts
and principles that you learn to some other programming language down
the line will be easy, relatively speaking.

Learn to program.  Take a COBOL or FORTRAN course if that's what's on
offer.  Just become a programmer.  After that, it's all just minor
adjustment.

-- Mike.


Re: [CODE4LIB] Advice on a class

2011-07-29 Thread Bill Janssen
Simon Spero sesunc...@gmail.com wrote:

  Additional languages which carry weight with me on a resume are
  OCaml, Processing, and any of Common Lisp, Scheme, or Clojure.
 
 Did you mean Clozure?  The other two are kinds of lisp. :-P

;-).  Nothing wrong with Clojure -- presumably JSR 292 in Java 7 will
make it even better.  I thought I'd covered Clozure under CL, though.

Bill


Re: [CODE4LIB] Advice on a class

2011-07-29 Thread Bill Janssen
Bill Dueber b...@dueber.com wrote:

 Unless you're in a very, *very* different library than mine, all the
 low-level stuff written in C and variants are at a low-enough level (and in
 very specialized domains) that I'd never have an expectation that anyone
 working in the library would mess with it. I presume there are people in
 research libraries that muck around with C/C++, rolling their own libraries
 and what not, but I've been at Michigan for six years and I haven't heard of
 it, here or elsewhere. For most of us, I think, doing something in C is
 premature optimization.

Completely agree with most of this.  The issue comes up when you need to
*fix* something in one of these libraries that someone else has
provided, or hook one of them up to your higher-level language.

 I hear the assertion often that a programmer needs to know C/assembly so
 they can truly understand how the machine is working at a deep level, and
 I've grown over the years to dismiss that assertion.

Yes, I'd say needs is too strong.

 Almost no one who makes
 a living programming in libraries is going to do a better job by hand than
 a modern optimizing compiler, certainly not if you take ROI into account.
 Data structures and Big-O is enough to tell you if you're moving down the
 right path, and then it's just a matter of being smart enough to use
 existing libraries where applicable --- and, again, avoiding premature
 optimization, at the code level or at the selection-of-a-language level. If
 you're hiring someone who's going to have to know the details of cache
 misses and how far to unroll loops or whatnot, you know exactly what you're
 hiring him/her for and don't need advice about hiring a generic programmer.

Yep, and yep.

 For stuff where you need not access to the bare metal but just raw speed,
 Java is mature, super-fast, and has lots of optimized libraries available.

Here's where we differ.  Java is mature, and very well-optimized (though
super-fast is perhaps a bit much), but the language itself is rather
poorly designed, and the libraries available are in my experience a sad
hodge-podge of brilliance and stodge.  I've spent far too much time
working around inexplicably years-old bugs in J2SE's standard library.

Some of the J2EE systems are very good, though.

 It also turns out many of us are using Solr these days, so Java has snuck
 into the library infrastructure already.

:-).  I used Doug's text-indexing library when he and Jan wrote it in
Common Lisp at PARC in the early 90's, and I was happy to see it appear
again in more commercially acceptable form as Lucene.  Lucene, and parts
of Solr, are important contributions to the technical landscape, and
Lucene is an example of an excellent Java library (I don't know Solr
well enough to comment).

But I use Lucene through Andi Vajda's excellent PyLucene, and I use a
couple of other Java libraries via JCC, Vajda's wrapper for those Java
libraries worth using.

 90% of my argument for doing green-field projects in Ruby is that I
 can access low-level Java libraries to do the heavy lifting and get an
 optimizing VM for free.

The thing I've found about Python is that one rarely needs to stoop to
using Java libraries, as there are generally superior Python libraries
available.  This is perhaps just a comment on the relative novelty of
Ruby, which is a fine programming language in its own right.  Though if
my goal was to exploit the Java ecosystem, I imagine I'd use Clojure or
Jython instead.

 I don't care what scripting language you use, as long as you use it well.
 Python, Ruby, Perl, whatever. If you know one, you can learn the others.

I tend to agree about the learning, but that doesn't make them equally
useful.  The size and shape of the user community and the variety of
offerings and third-party libraries available are important
considerations.  A good programmer is aware of that and reflects that
awareness in his skill set.

 I would never foist a project in, say, OCaml or Scheme on my library,
 because who the hell is going to maintain it (and its environment)??

What kind of programmer can I hire 'off the street'?  This is an
important and unfortunate commercial consideration which sometimes
forces a trade-off with the quality and functionality benefits available
with higher-level boutique languages.

 But I sure want someone who understands side effects and their effect
 on multi-threaded programming, because I've got a lot of idle cores
 sitting around waiting for work.

Yep.  Some nice features in Clojure for exploiting that.
  
 Finally, I always ask someone what their favorite programming environment
 is. I've had a few candidates tell me that they just use Notepad, and I
 don't mind admitting that that's almost a dealbreaker for me. Using a good
 editor or an IDE is a critical part of taking advantage of the language
 ecosystem. A good programming editor is a must.

Yep.

 Not having at least syntax highlighting and checking is, to me, a sign
 that 

Re: [CODE4LIB] Advice on a class

2011-07-28 Thread Fowler, Jason
 Until the Singularity happens, anyway.  I'd think there will always be lots 
 of enterprise Java jobs around.

The Singularity will be written in Java.

Jason

On 11-07-27 7:32 PM, Bill Janssen jans...@parc.commailto:jans...@parc.com 
wrote:

If I'm hiring a programmer, I want them to know C and Python.  C because
all the low-level stuff is written in that, Python because it's simply
the most useful all-around programming language at the moment, and if
you don't know it, well, how devoted are you really to your craft?

Various flavors of C are acceptable:  Objective-C is OK with me, and C++
is a plus -- it's an order of magnitude more difficult than C to use
properly, and people who can sling it properly are rare.  Additional
languages which carry weight with me on a resume are OCaml, Processing,
and any of Common Lisp, Scheme, or Clojure.

If I was hiring a digital *librarian*, I'd also expect them to know
Javascript, the language at the heart of the EPUB format.  But
Javascript is kind of tricky; it's a subtle powerful language with bad
syntax and weak libraries.  I certainly wouldn't recommend it to start
with.

Cary Gordon listu...@chillco.commailto:listu...@chillco.com wrote:
There are still plenty of opportunities for Cobol coders, but I
wouldn't recommend that either.

Java is the COBOL of the 21st century, so if you know Java well, there
will be a job in that for the next 20-30 years, I'd expect.  Until the
Singularity happens, anyway.  I'd think there will always be lots of
enterprise Java jobs around.

Bill


Re: [CODE4LIB] Advice on a class

2011-07-28 Thread Simon Spero

On Jul 27, 2011, at 10:32 PM, Bill Janssen wrote:

If I'm hiring a programmer, I want them to know C and Python.  [...]  
Various flavors of C are acceptable:  Objective-C is OK with me, and  
C++ is a plus -- it's an order of magnitude more difficult than C to  
use properly, and people who can sling it properly are rare.


I wouldn't say that C++ is an OOM harder than raw C to use properly;  
it just adds so many more ways to use it improperly, and templates are  
the work of the devil.   The problem with learning C++ is that it can  
be hard to predict what sort of code will be generated for very  
similar constructs, which is not a good thing for a low level  
language.  It's still always possible to fall back on C and inline  
assembler when you need it.


That's really the advantage of learning straight C as as low level  
language- it lets you see what sort of machine code corresponds to  
what sort of source code.  When combined with a good performance  
measuring suite you can get a much better feel for how different types  
of data access have completely different performance, what sort of  
things get optimized/vectorized cleanly, etc.  It also gives you an  
appreciation for how nice it is to be able to ignore these things most  
of the time  when using higher level languages.


Objective-C (counting the NS Foundation classes as part of the  
language) is a cleaner language, with a more dynamic object model;  
however, in current implementations the overhead of method calling is  
much too high, making the OO features only usable for relatively  
coarse grained methods. One thing that the Foundation classes show is  
how valuable it  can be to have long method names.


Additional languages which carry weight with me on a resume are  
OCaml, Processing, and any of Common Lisp, Scheme, or Clojure.


Did you mean Clozure?  The other two are kinds of lisp. :-P

Also, java should no more be considered in isolation from IntelliJ  
Idea that a lisp should be used without an emacs.


Simon


Re: [CODE4LIB] Advice on a class

2011-07-28 Thread Cary Gordon
Thank the FSM!!!

No Singularity in our lifetime!

On Thu, Jul 28, 2011 at 11:01 AM, Fowler, Jason jason.fow...@ubc.ca wrote:
 Until the Singularity happens, anyway.  I'd think there will always be lots 
 of enterprise Java jobs around.

 The Singularity will be written in Java.

 Jason

 On 11-07-27 7:32 PM, Bill Janssen 
 jans...@parc.commailto:jans...@parc.com wrote:

 If I'm hiring a programmer, I want them to know C and Python.  C because
 all the low-level stuff is written in that, Python because it's simply
 the most useful all-around programming language at the moment, and if
 you don't know it, well, how devoted are you really to your craft?

 Various flavors of C are acceptable:  Objective-C is OK with me, and C++
 is a plus -- it's an order of magnitude more difficult than C to use
 properly, and people who can sling it properly are rare.  Additional
 languages which carry weight with me on a resume are OCaml, Processing,
 and any of Common Lisp, Scheme, or Clojure.

 If I was hiring a digital *librarian*, I'd also expect them to know
 Javascript, the language at the heart of the EPUB format.  But
 Javascript is kind of tricky; it's a subtle powerful language with bad
 syntax and weak libraries.  I certainly wouldn't recommend it to start
 with.

 Cary Gordon listu...@chillco.commailto:listu...@chillco.com wrote:
 There are still plenty of opportunities for Cobol coders, but I
 wouldn't recommend that either.

 Java is the COBOL of the 21st century, so if you know Java well, there
 will be a job in that for the next 20-30 years, I'd expect.  Until the
 Singularity happens, anyway.  I'd think there will always be lots of
 enterprise Java jobs around.

 Bill




-- 
Cary Gordon
The Cherry Hill Company
http://chillco.com


Re: [CODE4LIB] Advice on a class

2011-07-28 Thread Bill Dueber
Interestingly, I disagree with almost everything you say below. Of course
PARC is unlike almost everywhere else :-)

Unless you're in a very, *very* different library than mine, all the
low-level stuff written in C and variants are at a low-enough level (and in
very specialized domains) that I'd never have an expectation that anyone
working in the library would mess with it. I presume there are people in
research libraries that muck around with C/C++, rolling their own libraries
and what not, but I've been at Michigan for six years and I haven't heard of
it, here or elsewhere. For most of us, I think, doing something in C is
premature optimization.

I hear the assertion often that a programmer needs to know C/assembly so
they can truly understand how the machine is working at a deep level, and
I've grown over the years to dismiss that assertion. Almost no one who makes
a living programming in libraries is going to do a better job by hand than
a modern optimizing compiler, certainly not if you take ROI into account.
Data structures and Big-O is enough to tell you if you're moving down the
right path, and then it's just a matter of being smart enough to use
existing libraries where applicable --- and, again, avoiding premature
optimization, at the code level or at the selection-of-a-language level. If
you're hiring someone who's going to have to know the details of cache
misses and how far to unroll loops or whatnot, you know exactly what you're
hiring him/her for and don't need advice about hiring a generic programmer.

For stuff where you need not access to the bare metal but just raw speed,
Java is mature, super-fast, and has lots of optimized libraries available.
It also turns out many of us are using Solr these days, so Java has snuck
into the library infrastructure already. 90% of my argument for doing
green-field projects in Ruby is that I can access low-level Java libraries
to do the heavy lifting and get an optimizing VM for free.

I don't care what scripting language you use, as long as you use it well.
Python, Ruby, Perl, whatever. If you know one, you can learn the others. If
you're a Python shop and want someone who can hit the ground running, that's
fine, but Python's not ubiquitous. I don't speak Python except at the most
superficial level, and yet I consider myself to be devoted to my craft.
People who have seen my code may disagree :-)

For languages that are, shall we say, less commercial, I think they're
useful as an analog for formal computer science training. There are plenty
of people who gain great skills and knowledge purely through experience, but
formal training is basically designed to short-circuit experience, and I
think a formal computer science degree (and esp. a master's) does a great
job of training people to think hard (and correctly!) about algorithms and
data structures. I expect someone with a CS degree to have been exposed to
functional programming, s-expressions, and a variety of data structures.
Substantial experience with Erlang or Haskell or Scheme or whatever tells me
(as long as the project truly was *substantial*) that the candidate has at
least thought hard about issues deeper than the ones one often runs across
dashing off a program in PHP or Perl. I would never foist a project in, say,
OCaml or Scheme on my library, because who the hell is going to maintain it
(and its environment)?? But I sure want someone who understands side effects
and their effect on multi-threaded programming, because I've got a lot of
idle cores sitting around waiting for work.

Finally, I always ask someone what their favorite programming environment
is. I've had a few candidates tell me that they just use Notepad, and I
don't mind admitting that that's almost a dealbreaker for me. Using a good
editor or an IDE is a critical part of taking advantage of the language
ecosystem. A good programming editor is a must. Not having at least syntax
highlighting and checking is, to me, a sign that you haven't written enough
code for the lack of such functionality to drive you nuts yet. Java without
an IDE is insanity. And if the candidate proudly tells you that she uses vi,
well, make sure she really knows how to push it around. You don't get
street-cred for using a 30 year old program shittily.

 -Bill-




On Wed, Jul 27, 2011 at 10:32 PM, Bill Janssen jans...@parc.com wrote:

 If I'm hiring a programmer, I want them to know C and Python.  C because
 all the low-level stuff is written in that, Python because it's simply
 the most useful all-around programming language at the moment, and if
 you don't know it, well, how devoted are you really to your craft?

 Various flavors of C are acceptable:  Objective-C is OK with me, and C++
 is a plus -- it's an order of magnitude more difficult than C to use
 properly, and people who can sling it properly are rare.  Additional
 languages which carry weight with me on a resume are OCaml, Processing,
 and any of Common Lisp, Scheme, or Clojure.

 If I was 

Re: [CODE4LIB] Advice on a class

2011-07-27 Thread Bill Janssen
If I'm hiring a programmer, I want them to know C and Python.  C because
all the low-level stuff is written in that, Python because it's simply
the most useful all-around programming language at the moment, and if
you don't know it, well, how devoted are you really to your craft?

Various flavors of C are acceptable:  Objective-C is OK with me, and C++
is a plus -- it's an order of magnitude more difficult than C to use
properly, and people who can sling it properly are rare.  Additional
languages which carry weight with me on a resume are OCaml, Processing,
and any of Common Lisp, Scheme, or Clojure.

If I was hiring a digital *librarian*, I'd also expect them to know
Javascript, the language at the heart of the EPUB format.  But
Javascript is kind of tricky; it's a subtle powerful language with bad
syntax and weak libraries.  I certainly wouldn't recommend it to start
with.

Cary Gordon listu...@chillco.com wrote:
 There are still plenty of opportunities for Cobol coders, but I
 wouldn't recommend that either.

Java is the COBOL of the 21st century, so if you know Java well, there
will be a job in that for the next 20-30 years, I'd expect.  Until the
Singularity happens, anyway.  I'd think there will always be lots of
enterprise Java jobs around.

Bill


Re: [CODE4LIB] Advice on a class

2011-07-26 Thread David Mayo
If you're looking to do web programming, C is probably not going to directly
benefit you - it's not that it's a bad language to learn, or that it doesn't
have uses, but you'd probably be better off trying to improve your PHP or
RoR skills.

That being said, if you need to get lower-level knowledge of how memory
management and other close-to-the-metal concerns work, a decent C course
wouldn't be a bad thing at all.

If you're an autodidact, there are some good resources available on the web
- I can work up a list, and I'm sure other people have suggestions.  I also
have a fondness for O'Reilly's *Programming PHP*, if you want to pick up a
book.  I've heard really good things about The Pragmatic Programmer's Ruby
book, but Ruby isn't (thus far) something I've worked with, so that's
secondhand advice.

- Dave

On Tue, Jul 26, 2011 at 2:54 PM, Lepczyk, Timothy tlepc...@wustl.eduwrote:

 Hi All,

 I work in a digital library and am transitioning to something more like a
 programmer and less like a librarian.  My strengths are in xslt and unix,
 but I've been working some with php and ruby on rails.  I'm trying to learn
 as much as I can, and am considering enrolling in an intro to C programming
 class (free through my university's night school).

 Is this worthwhile, or should I focus my attention elsewhere?

 Thanks,

 Tim Lepczyk



Re: [CODE4LIB] Advice on a class

2011-07-26 Thread Francis Kayiwa
On Tue, Jul 26, 2011 at 01:54:36PM -0500, Lepczyk, Timothy wrote:
 Hi All,
 
 I work in a digital library and am transitioning to something more like a 
 programmer and less like a librarian.  My strengths are in xslt and unix, but 
 I've been working some with php and ruby on rails.  I'm trying to learn as 
 much as I can, and am considering enrolling in an intro to C programming 
 class (free through my university's night school).  
 
 Is this worthwhile, or should I focus my attention elsewhere?

Will you share this `time-freezing device` ? How does one get free time for 
this? :-)

I personally think a class is what you make of it. If you are keen on learning 
C Programming you are likely to be a good student and make the class worth your 
while. I may be completely missing the timbre of your question however. If the 
question is `will this be worth your employers while` it is harder to justify a 
C programmer in most organization (where's that asbestos suit?) I personally 
find myself writing less and less of it that I added it on my `do more of` list 
for the year. Unsurprisingly that is the one thing I haven't done. Not to worry 
still 5 more months. :-) This however isn't about me though.

regards,
./fxk
 
 Thanks,
 
 Tim Lepczyk
 

-- 
Duct tape is like the force.  It has a light side, and a dark side, and
it holds the universe together.
-- Carl Zwanzig


Re: [CODE4LIB] Advice on a class

2011-07-26 Thread marijane white
It kind of depends on what you want to do.  If you're going to stick with
web programming, I'm not sure C is very practical, but it will give you
exposure to concepts that may give you a better theoretical understanding of
programming and computer science concepts overall.  If you want to get into
say, iOS application development, it's a great idea.


marijane white


On Tue, Jul 26, 2011 at 11:54 AM, Lepczyk, Timothy tlepc...@wustl.eduwrote:

 Hi All,

 I work in a digital library and am transitioning to something more like a
 programmer and less like a librarian.  My strengths are in xslt and unix,
 but I've been working some with php and ruby on rails.  I'm trying to learn
 as much as I can, and am considering enrolling in an intro to C programming
 class (free through my university's night school).

 Is this worthwhile, or should I focus my attention elsewhere?

 Thanks,

 Tim Lepczyk



Re: [CODE4LIB] Advice on a class

2011-07-26 Thread Cowles, Esme
Tim-

As someone who learned to program by myself, I found taking a similar class 
very helpful (my circumstances sound the same as yours, except in my case the 
language was Java).  It gave me a good foundation to learn new languages, new 
technologies, etc.  The general approach and concepts will be transferable 
across languages, though of course the syntax and such will vary quite a bit.

-Esme
--
Esme Cowles escow...@ucsd.edu

Information wants to be anthropomorphized. -- /. sig

On 07/26/2011, at 2:54 PM, Lepczyk, Timothy wrote:

 Hi All,
 
 I work in a digital library and am transitioning to something more like a 
 programmer and less like a librarian.  My strengths are in xslt and unix, but 
 I've been working some with php and ruby on rails.  I'm trying to learn as 
 much as I can, and am considering enrolling in an intro to C programming 
 class (free through my university's night school).  
 
 Is this worthwhile, or should I focus my attention elsewhere?
 
 Thanks,
 
 Tim Lepczyk


Re: [CODE4LIB] Advice on a class

2011-07-26 Thread Lepczyk, Timothy
Thanks everyone.  The reasons I thought of taking the C course is a) it's free, 
b) concepts might be transferrable to other languages.  I may continue to focus 
on Ruby on Rails.

Tim Lepczyk


-Original Message-
From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf Of Genny 
Engel
Sent: Tuesday, July 26, 2011 2:19 PM
To: CODE4LIB@LISTSERV.ND.EDU
Subject: Re: [CODE4LIB] Advice on a class

When I was in library school, the programming classes there were in C (this was 
quite a while ago!).  I've found it actually quite useful to have that 
background when learning things like JavaScript, PHP, and even VB. They all 
build on the concepts I originally learned from C. [Note:  this does not work 
at all as a basis for learning Perl.  Nothing does.]

C++ might be a better choice if you want to start off with a grounding in 
object-oriented programming.  Or maybe Java.  I'm about to start the C++ course 
at the local junior college.  Which reminds me to mention, it probably doesn't 
matter which programming course you take right now -- if you then go through 
life taking more programming classes like I do!

Genny Engel
Sonoma County Library
gen...@sonoma.lib.ca.us
707 545-0831 x581
www.sonomalibrary.org

-Original Message-
From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf Of David 
Mayo
Sent: Tuesday, July 26, 2011 12:12 PM
To: CODE4LIB@LISTSERV.ND.EDU
Subject: Re: [CODE4LIB] Advice on a class

If you're looking to do web programming, C is probably not going to directly 
benefit you - it's not that it's a bad language to learn, or that it doesn't 
have uses, but you'd probably be better off trying to improve your PHP or RoR 
skills.

That being said, if you need to get lower-level knowledge of how memory 
management and other close-to-the-metal concerns work, a decent C course 
wouldn't be a bad thing at all.

If you're an autodidact, there are some good resources available on the web
- I can work up a list, and I'm sure other people have suggestions.  I also 
have a fondness for O'Reilly's *Programming PHP*, if you want to pick up a 
book.  I've heard really good things about The Pragmatic Programmer's Ruby 
book, but Ruby isn't (thus far) something I've worked with, so that's 
secondhand advice.

- Dave

On Tue, Jul 26, 2011 at 2:54 PM, Lepczyk, Timothy tlepc...@wustl.eduwrote:

 Hi All,

 I work in a digital library and am transitioning to something more 
 like a programmer and less like a librarian.  My strengths are in xslt 
 and unix, but I've been working some with php and ruby on rails.  I'm 
 trying to learn as much as I can, and am considering enrolling in an 
 intro to C programming class (free through my university's night school).

 Is this worthwhile, or should I focus my attention elsewhere?

 Thanks,

 Tim Lepczyk



Re: [CODE4LIB] Advice on a class

2011-07-26 Thread Joe Hourcle
On Jul 26, 2011, at 3:31 PM, Lepczyk, Timothy wrote:

 Thanks everyone.  The reasons I thought of taking the C course is a) it's 
 free, b) concepts might be transferrable to other languages.  I may continue 
 to focus on Ruby on Rails.


Before everyone manages to scare you away from learning C,
if you're going to be doing a lot of programming, it's useful to
learn other languages so you can see how they handle
different tasks.  C is particularly useful as a lot of other language's
implementations were primarily written in C.

In college, I took a 68k assembly course ... I've never done
*any* assembly since then, but it makes you appreciate the
issues in optimization, and just how low-level you need to get
when talking to processors.

With C, pointers and pointer arithmetic are a bit of a pain,
and strongly-typed languages aren't the greatest for all
tasks ... and don't get me started on C-strings ... but you'll
learn a lot ... even just where to look for people screwing
up their assumptions  creating security problems because
of off-by-one issues or screwing up the length of their strings
or neglecting their garbage collection.

... and, understanding C will also help you when it comes
time to install stuff, especially if you're trying to port someone's
linux-centric code to Solaris or MacOS.

As for the stuff that translates:

searching for the missing semi-colon
error messages that make no sense
finding the 'smart quote' that your lab partner pasted 
in because they do their editing in MS Word.

um ... I'm not selling this very well, am I?

Anyway ... C is a useful language ... almost all higher languages
have some way of binding to C code, and if nothing else,
learning it means you'll be able to port over someone's 
1k line C program into 20 to 40 lines of whatever other modern
language you prefer.

-Joe


Re: [CODE4LIB] Advice on a class

2011-07-26 Thread Mark Pernotto
I think that by taking the C class, it will start you on a long road
towards programming - some of the topics you may encounter may not be
immediately applicable to your RoR or PHP learning experiences, but it
should provide you a nice foundation in problem solving (from a
programming perspective) and possibly a starting base in
object-oriented programming.  The ability of working and learning with
others in a classroom setting could potentially provide insight and
feedback as a collective learning environment.

I suppose the only thing I would worry about in a classroom setting
would be the pace.  Sometimes if I'm really gearing up to learn
something new, I'd prefer doing my own research through StackOverflow
and a Wrox intro book rather than a classroom.  That way, it lets me
move along at my own pace, skipping the rudimentary lessons and
focusing more intently on what it is I'm there to learn.

Mark A. Pernotto



On Tue, Jul 26, 2011 at 1:02 PM, Joe Hourcle
onei...@grace.nascom.nasa.gov wrote:
 On Jul 26, 2011, at 3:31 PM, Lepczyk, Timothy wrote:

 Thanks everyone.  The reasons I thought of taking the C course is a) it's 
 free, b) concepts might be transferrable to other languages.  I may continue 
 to focus on Ruby on Rails.


 Before everyone manages to scare you away from learning C,
 if you're going to be doing a lot of programming, it's useful to
 learn other languages so you can see how they handle
 different tasks.  C is particularly useful as a lot of other language's
 implementations were primarily written in C.

 In college, I took a 68k assembly course ... I've never done
 *any* assembly since then, but it makes you appreciate the
 issues in optimization, and just how low-level you need to get
 when talking to processors.

 With C, pointers and pointer arithmetic are a bit of a pain,
 and strongly-typed languages aren't the greatest for all
 tasks ... and don't get me started on C-strings ... but you'll
 learn a lot ... even just where to look for people screwing
 up their assumptions  creating security problems because
 of off-by-one issues or screwing up the length of their strings
 or neglecting their garbage collection.

 ... and, understanding C will also help you when it comes
 time to install stuff, especially if you're trying to port someone's
 linux-centric code to Solaris or MacOS.

 As for the stuff that translates:

        searching for the missing semi-colon
        error messages that make no sense
        finding the 'smart quote' that your lab partner pasted
                in because they do their editing in MS Word.

 um ... I'm not selling this very well, am I?

 Anyway ... C is a useful language ... almost all higher languages
 have some way of binding to C code, and if nothing else,
 learning it means you'll be able to port over someone's
 1k line C program into 20 to 40 lines of whatever other modern
 language you prefer.

 -Joe



Re: [CODE4LIB] Advice on a class

2011-07-26 Thread David Uspal
Quick side note -- there are still job opportunities for C developers as C 
seems to still be the language of choice in the microprocessor/microdevice 
world (think gas pumps, vending machines, coffee pots, etc).  So, while job 
opportunities in the library world for C programmers may be limited, C is far 
from being an antiquated language.

David K. Uspal
Technology Development Specialist
Falvey Memorial Library
Phone: 610-519-8954
Email: david.us...@villanova.edu



-Original Message-
From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf Of 
Lepczyk, Timothy
Sent: Tuesday, July 26, 2011 3:31 PM
To: CODE4LIB@LISTSERV.ND.EDU
Subject: Re: [CODE4LIB] Advice on a class

Thanks everyone.  The reasons I thought of taking the C course is a) it's free, 
b) concepts might be transferrable to other languages.  I may continue to focus 
on Ruby on Rails.

Tim Lepczyk


-Original Message-
From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf Of Genny 
Engel
Sent: Tuesday, July 26, 2011 2:19 PM
To: CODE4LIB@LISTSERV.ND.EDU
Subject: Re: [CODE4LIB] Advice on a class

When I was in library school, the programming classes there were in C (this was 
quite a while ago!).  I've found it actually quite useful to have that 
background when learning things like JavaScript, PHP, and even VB. They all 
build on the concepts I originally learned from C. [Note:  this does not work 
at all as a basis for learning Perl.  Nothing does.]

C++ might be a better choice if you want to start off with a grounding in 
object-oriented programming.  Or maybe Java.  I'm about to start the C++ course 
at the local junior college.  Which reminds me to mention, it probably doesn't 
matter which programming course you take right now -- if you then go through 
life taking more programming classes like I do!

Genny Engel
Sonoma County Library
gen...@sonoma.lib.ca.us
707 545-0831 x581
www.sonomalibrary.org

-Original Message-
From: Code for Libraries [mailto:CODE4LIB@LISTSERV.ND.EDU] On Behalf Of David 
Mayo
Sent: Tuesday, July 26, 2011 12:12 PM
To: CODE4LIB@LISTSERV.ND.EDU
Subject: Re: [CODE4LIB] Advice on a class

If you're looking to do web programming, C is probably not going to directly 
benefit you - it's not that it's a bad language to learn, or that it doesn't 
have uses, but you'd probably be better off trying to improve your PHP or RoR 
skills.

That being said, if you need to get lower-level knowledge of how memory 
management and other close-to-the-metal concerns work, a decent C course 
wouldn't be a bad thing at all.

If you're an autodidact, there are some good resources available on the web
- I can work up a list, and I'm sure other people have suggestions.  I also 
have a fondness for O'Reilly's *Programming PHP*, if you want to pick up a 
book.  I've heard really good things about The Pragmatic Programmer's Ruby 
book, but Ruby isn't (thus far) something I've worked with, so that's 
secondhand advice.

- Dave

On Tue, Jul 26, 2011 at 2:54 PM, Lepczyk, Timothy tlepc...@wustl.eduwrote:

 Hi All,

 I work in a digital library and am transitioning to something more 
 like a programmer and less like a librarian.  My strengths are in xslt 
 and unix, but I've been working some with php and ruby on rails.  I'm 
 trying to learn as much as I can, and am considering enrolling in an 
 intro to C programming class (free through my university's night school).

 Is this worthwhile, or should I focus my attention elsewhere?

 Thanks,

 Tim Lepczyk



Re: [CODE4LIB] Advice on a class

2011-07-26 Thread Michael J. Giarlo
On Tue, Jul 26, 2011 at 20:40, Gabriel Farrell gsf...@gmail.com wrote:
 If the textbook is KR, take the class.


And if the professor is GR, bang your head.


Re: [CODE4LIB] Advice on a class

2011-07-26 Thread Cary Gordon
There are still plenty of opportunities for Cobol coders, but I
wouldn't recommend that either.

I would recommend that you take a course that concentrates on the
fundamentals of modern programming and uses a modern language. I like
writing in languages that let you write clean code and be as object
oriented as you want to be. Dynamic languages such as Python and Ruby
are really great for that and are fun to work with. PHP, which I work
with daily is a big tent, and while it does a lot of things, it does
not provide much structure.

If PHP had been my first language, I might have gone into a different
business. PHP now has some OO features, but like C++ and Java, it is,
at its core, procedural. Procedural is not a bad thing… unless you
want to be OO.

Thanks,

Cary

On Tue, Jul 26, 2011 at 11:54 AM, Lepczyk, Timothy tlepc...@wustl.edu wrote:
 Hi All,

 I work in a digital library and am transitioning to something more like a 
 programmer and less like a librarian.  My strengths are in xslt and unix, but 
 I've been working some with php and ruby on rails.  I'm trying to learn as 
 much as I can, and am considering enrolling in an intro to C programming 
 class (free through my university's night school).

 Is this worthwhile, or should I focus my attention elsewhere?

 Thanks,

 Tim Lepczyk




-- 
Cary Gordon
The Cherry Hill Company
http://chillco.com


Re: [CODE4LIB] Advice on a class

2011-07-26 Thread stuart yeates

On 27/07/11 06:54, Lepczyk, Timothy wrote:

Hi All,

I work in a digital library and am transitioning to something more like a 
programmer and less like a librarian.  My strengths are in xslt and unix, but 
I've been working some with php and ruby on rails.  I'm trying to learn as much 
as I can, and am considering enrolling in an intro to C programming class (free 
through my university's night school).

Is this worthwhile, or should I focus my attention elsewhere?


Lots of people have recommendations for this or that technology.

If you want to learn computer science, rather than this or that 
technology, I recommend that you start at http://csunplugged.org/


cheers
stuart
--
Stuart Yeates
Library Technology Services http://www.victoria.ac.nz/library/