Re: [Haskell-cafe] education or experience?

2012-12-09 Thread Heinrich Apfelmus

Christopher Howard wrote:

I'm at something of a crossroads, and I'm hoping to get a bit of free
career advice. I really enjoy programming with Haskell (and a few other
exotic languages), and was hoping I could eventually make a living in
that sort of field. Not rich and famous, necessarily, just enough to get
by comfortably. I'm trying to decide, however; should I go back to
school, finish my B.S. and pursue a Masters in CompSci? Or would the
time (and money) be better spent aggressively pursuing volunteer work
for companies, hoping to eventually get the experience and contacts that
lead to a paying job?

To be honest, I don't really want to go back to school, because I learn
a lot faster (and more economically) on my own. However, I'm not sure
which path is the fastest, and safest, approach to an actual paycheck.


Concerning a university education, there are two approaches:

1. I want to learn as much as possible
2. I want to learn just enough to get a high-paying job

University is great at serving the first approach, not only because you 
have the freedom to skip lectures that you already know, but also 
because professors have a lot of interesting things to teach if you let 
them, and because some of your classmates will be equally interested and 
interesting. In other words, if you want to learn everything, then 
university is the right environment.


On the other hand, approaching university from the second point of view 
usually does not justify the cost for the little benefit you obtain this 
way. Unfortunately, it seems to me that the tuition costs in the U.S. 
strongly suggest the second approach. To avoid this, I recommend to 
either go abroad or become very good and acquire a scholarship.



Best regards,
Heinrich Apfelmus

--
http://apfelmus.nfshost.com


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] education or experience?

2012-12-09 Thread Doug McIlroy
 Yes... CS academics delivers less than it could/should;
 and whatever this delivery is, its asymptotically sub-linear.
 Some of it is to do with the not-quick-enough takeup of FP in academia,
 though there are obviously many other factors as well.

 http://blog.languager.org/2011/02/cs-education-is-fat-and-weak-1.html
 and sequel is about this: how we are not getting over the quirks of the
 past history of CS in present day teaching. Here too suggestions for
 modifications/ change of emphasis are appreciated.

Rusi's cogent blog post includes a list of techniques/concepts that
the unconverted could profitably pick up from the FP community.
In fact the FP community came late to some of these, just as 
programming languages at large came late to garbage collection.

Lazy evaluation--at the heart of spreadsheets since the beginning.
Pattern matching--native to string processing (e.g. COMIT, SNOBOL).
  Appeared nearly in its present form in COGENT (1965).
Booleans as first class*--surely this is a joke. Algol 60 had them.
  Matlab exploits them heavily (though represented as doubles).
Data orientation--COBOL fostered this outlook; see Michael Jackson.
  As long as Lisp ruled, FP lagged on data types.

FP also deserves credit for infinite data structures (though the special
case of stream processing dates way back).

Doug McIlroy

* It's amusing to note that real Booleans--the ones that Boole 
used--were integers. For Boole, or(a,b) = a + b - a*b.

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] education or experience?

2012-12-09 Thread Rustom Mody
Thanks Doug for reminding me of points that I had forgotten (and which are
new)
I will insert them into the blog
My comments inline

On Sun, Dec 9, 2012 at 10:01 PM, Doug McIlroy d...@cs.dartmouth.edu wrote:

  Yes... CS academics delivers less than it could/should;
  and whatever this delivery is, its asymptotically sub-linear.
  Some of it is to do with the not-quick-enough takeup of FP in academia,
  though there are obviously many other factors as well.

  http://blog.languager.org/2011/02/cs-education-is-fat-and-weak-1.html
  and sequel is about this: how we are not getting over the quirks of the
  past history of CS in present day teaching. Here too suggestions for
  modifications/ change of emphasis are appreciated.

 Rusi's cogent blog post includes a list of techniques/concepts that
 the unconverted could profitably pick up from the FP community.
 In fact the FP community came late to some of these, just as
 programming languages at large came late to garbage collection.

 Lazy evaluation--at the heart of spreadsheets since the beginning.


Never thought of that  -- nice!


 Pattern matching--native to string processing (e.g. COMIT, SNOBOL).


Snobol -- yes, comit Ive heard of but dont know

  Appeared nearly in its present form in COGENT (1965).


Hmm google gives me different cogents/  I guess you are referring to the
Reynolds one?

Booleans as first class*--surely this is a joke. Algol 60 had them.


Not sure what you are saying (unless its about the footnote that Boole
treated bools as ints! This is new to me)  I was referring to the fact that
C programmers have great difficulty thinking of bools as first class for
similar reasons to why lists as first class is hard. [And python
programmers also for that matter, whose language does not have a proper
first class bool type]


   Matlab exploits them heavily (though represented as doubles).


Not sure what you are referring to

Data orientation--COBOL fostered this outlook; see Michael Jackson.


Interesting! I wonder though whether you and I use 'data-orientation' in
the same way?
See below.


   As long as Lisp ruled, FP lagged on data types.


A tendentious point: A lisper would say that since Lisp from the beginning
had a universal data-type, it need never bother to restrict types. [Note I
recollect first hearing the term data orientation from SICP]



 FP also deserves credit for infinite data structures (though the special
 case of stream processing dates way back).

 Doug McIlroy

 * It's amusing to note that real Booleans--the ones that Boole
 used--were integers. For Boole, or(a,b) = a + b - a*b.

 ___
 Haskell-Cafe mailing list
 Haskell-Cafe@haskell.org
 http://www.haskell.org/mailman/listinfo/haskell-cafe




-- 
http://www.the-magus.in
http://blog.languager.org
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] education or experience?

2012-12-09 Thread Rustom Mody
On Sun, Dec 9, 2012 at 11:04 PM, Malcolm Wallace malcolm.wall...@me.comwrote:


 On 9 Dec 2012, at 16:31, Doug McIlroy wrote:

  In fact the FP community came late to some of these, just as
  programming languages at large came late to garbage collection.
 
  Lazy evaluation--at the heart of spreadsheets since the beginning.

 Lazy evaluation for the lambda calculus - 1971 (Wadsworth)
 Lazy evaluation in a programming language - 1976 (HendersonMorris,
 FriedmanWise)

 I wouldn't call those dates late, especially since VisiCalc, the first
 widely-used electronic spreadsheet entered the market in 1978.

 Regards,
 Malcolm


You are reading an associativity/parse to Doug's post that he probably did
not intend.
FP came late was meant to apply to the data orientation (I think) thanks
to the long domination of Lisp
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] education or experience?

2012-12-09 Thread Mike Meyer


Heinrich Apfelmus apfel...@quantentunnel.de wrote:
Christopher Howard wrote:
Concerning a university education, there are two approaches
1. I want to learn as much as possible
2. I want to learn just enough to get a high-paying job

There's actually a third approach ( and probably more):

3. I want to learn to do this job as well as possible.

On the other hand, approaching university from the second point of view

usually does not justify the cost for the little benefit you obtain
this 
way. Unfortunately, it seems to me that the tuition costs in the U.S. 
strongly suggest the second approach. To avoid this, I recommend to 
either go abroad or become very good and acquire a scholarship.

That really depends on the job at in question. When I was looking for entry 
level programming jobs, not having a degree meant you never got past the hr 
department. Getting a degree (pretty much any degree) was required to get the 
high-paying job. I'm willing to believe that's no longer the case for 
programmers, because academia has consistently failed to deliver sufficient 
quality programmers to meet industry needs. On the other hand (watching my sons 
deal with the job market), the litmus test for you've got what it takes to 
survive in the system is now a masters, not a bachelors, so maybe you're wrong 
about that.

The other thing to consider is what your long-term goals are. Do you want to be 
a code monkey all your life? Or do you aspire to more? What are the 
requirements for that more? Getting a degree now may well avoid doing it 
later.

Finally, with approach #3, you really need a mentor who can tell you whether or 
not you're doing a competent job. You're much more likely to find that in a 
university environment than trying to learn things  by yourself. Joining an 
open source project might get it for you.
-- 
Sent from my Android tablet with K-9 Mail. Please excuse my swyping.

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] education or experience?

2012-12-09 Thread Doug McIlroy
  Lazy evaluation--at the heart of spreadsheets since the beginning.

 Never thought of that  -- nice!

Unfortunately it's not literally true, because spreadsheets push
recalculated values to all the variables that depend on them,
rather than waiting until the dependent values are needed.  But
the idea that sequencing is by dependency rather than by
algorithmic specification is the same.  I remember playing around
(before spreadsheets) with the idea for Fortran-like code and 
concluding that the benefit of not having to specify sequence 
wasn't worth the effort. What a lack of imagination!

  Pattern matching--native to string processing (e.g. COMIT, SNOBOL).
Appeared nearly in its present form in COGENT (1965).

 Hmm google gives me different cogents/  I guess you are referring to the
 Reynolds one?

Yes.

  Booleans as first class*--surely this is a joke. Algol 60 had them.

 Not sure what you are saying (unless its about the footnote that Boole
 treated bools as ints! This is new to me)  I was referring to the fact that
 C programmers have great difficulty thinking of bools as first class

Your observation is interesting. Booleans and their utility were well
known when C was designed. But since the language level was
deliberately very close to real machine architecture, which rarely
had native support for 1-bit quantities, the data type was deemed
superfluous. (If C had begun on the IBM 7030 it probably would have
have had Booleans.) I don't remember anybody predicting that the choice
risked banishing Booleans from mind.  The one deviation from real
architecture that C did embrace was to define a representation for 
the result of comparison.  That had another unpredicted consequence:
computer architects imitated the language in hardware! (C's largely
ignored bitfield capability came later and, if anything, demoted
Booleans to an artifact of structs.)

The joke I saw was that there was no way that Boolean values
had ever been denied first-class citizenship as Strachey defined
it--even if they didn't have a special syntactic identity.

Matlab exploits them heavily (though represented as doubles).

 Not sure what you are referring to

I had in mind Matlab's frequent use of a Boolean array as
a characteristic function describing some property of the
elements of another array.  Such arrays are used to control
other array operations. In this usage, the characteristic
array may be optimized out of existense, but it fosters
higher-level thinking and concise code.

In reply to your second note, Malcolm Wallace is right. I did
intend to say that FP was late with lazy evaluation.  My mistake
was to think VisiCalc had appeared before 1970. Similarly,
I believed that call by need came into our vocabulary
soon after Algol 60 brought call be name and call by value to
our attention as somewhat better-behaved models than Fortran's
call by reference. Now I suspect that belief is wrong, too.

Doug

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] education or experience?

2012-12-09 Thread Doug McIlroy

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] education or experience?

2012-12-09 Thread Richard O'Keefe

On 10/12/2012, at 6:34 AM, Malcolm Wallace wrote:

 
 On 9 Dec 2012, at 16:31, Doug McIlroy wrote:
 
 In fact the FP community came late to some of these, just as 
 programming languages at large came late to garbage collection.
 
 Lazy evaluation--at the heart of spreadsheets since the beginning.
 
 Lazy evaluation for the lambda calculus - 1971 (Wadsworth)
 Lazy evaluation in a programming language - 1976 (HendersonMorris, 
 FriedmanWise)

Pop-2 had lazily evaluated streams about 1970.  In fact that's
how it did input:  a 'character producer' was nothing other than
a lazily evaluated list of characters.  The book about it appeared
in 1971.




___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] education or experience?

2012-12-09 Thread Rustom Mody
On Mon, Dec 10, 2012 at 5:33 AM, Doug McIlroy d...@cs.dartmouth.edu wrote:

 Matlab exploits them heavily (though represented as doubles).

  Not sure what you are referring to

 I had in mind Matlab's frequent use of a Boolean array as
 a characteristic function describing some property of the
 elements of another array.  Such arrays are used to control
 other array operations. In this usage, the characteristic
 array may be optimized out of existense, but it fosters
 higher-level thinking and concise code.


In which case it goes back to APL's compress operator ie 1960.
http://www.aplusdev.org/APlusRefV2_8.html#HEADING179

Heres a session that demonstrates

 A+
 Copyright (c) 1990-2008 Morgan Stanley.  All rights reserved.
 This version is Release 4.22
 a ← 1 2 3 4 5
 b ← 1 0 1 1 0
 b/a
 1 3 4
 b ← 1 0 2 1 0
 b/a
 1 3 3 4



-- 
http://www.the-magus.in
http://blog.languager.org
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] education or experience?

2012-12-08 Thread Christopher Howard
I'm at something of a crossroads, and I'm hoping to get a bit of free
career advice. I really enjoy programming with Haskell (and a few other
exotic languages), and was hoping I could eventually make a living in
that sort of field. Not rich and famous, necessarily, just enough to get
by comfortably. I'm trying to decide, however; should I go back to
school, finish my B.S. and pursue a Masters in CompSci? Or would the
time (and money) be better spent aggressively pursuing volunteer work
for companies, hoping to eventually get the experience and contacts that
lead to a paying job?

To be honest, I don't really want to go back to school, because I learn
a lot faster (and more economically) on my own. However, I'm not sure
which path is the fastest, and safest, approach to an actual paycheck.

(Also, I'm something of a die-hard FOSS purist, if that affects the
discussion at all.)

-- 
frigidcode.com



signature.asc
Description: OpenPGP digital signature
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] education or experience?

2012-12-08 Thread Roman Cheplyaka
* Christopher Howard christopher.how...@frigidcode.com [2012-12-08 
13:26:58-0900]
 I'm at something of a crossroads, and I'm hoping to get a bit of free
 career advice. I really enjoy programming with Haskell (and a few other
 exotic languages), and was hoping I could eventually make a living in
 that sort of field. Not rich and famous, necessarily, just enough to get
 by comfortably. I'm trying to decide, however; should I go back to
 school, finish my B.S. and pursue a Masters in CompSci? Or would the
 time (and money) be better spent aggressively pursuing volunteer work
 for companies, hoping to eventually get the experience and contacts that
 lead to a paying job?
 
 To be honest, I don't really want to go back to school, because I learn
 a lot faster (and more economically) on my own. However, I'm not sure
 which path is the fastest, and safest, approach to an actual paycheck.
 
 (Also, I'm something of a die-hard FOSS purist, if that affects the
 discussion at all.)

If you have some money to cover your expenses, consider learning by
contributing to open source software.

Compared to an academic career, you'll have a more real goal of making
good software (instead of publishing papers). Also, this experience will
be much more relevant for your future job.

Compared to work for companies, you can choose more challenging,
interesting and innovative tasks that most companies can offer.
And the code quality will often be higher in open source than in
companies.

Roman

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] education or experience?

2012-12-08 Thread Jerzy Karczmarczuk

Roman Cheplyaka comments a post by Christopher Howard:

I'm trying to decide, however; should I go back to
school, finish my B.S. and pursue a Masters in CompSci? Or would the
time (and money) be better spent aggressively pursuing volunteer work
for companies, hoping to eventually get the experience and contacts that
lead to a paying job?

To be honest, I don't really want to go back to school, because I learn
a lot faster (and more economically) on my own. However, I'm not sure
which path is the fastest, and safest, approach to an actual paycheck.

If you have some money to cover your expenses, consider learning by
contributing to open source software.

Compared to an academic career, you'll have a more real goal of making
good software (instead of publishing papers). Also, this experience will
be much more relevant for your future job.

Compared to work for companies, you can choose more challenging,
interesting and innovative tasks that most companies can offer.
And the code quality will often be higher in open source than in
companies.

Roman

For me, opposing experience and education is simply silly.

Probably more than 70% of all people would learn much faster on their 
own than at school. But, learn WHAT? :


1. Probably less than 1% would guess correctly what they SHOULD learn, and
2. in general they will not be able to assess their own knowledge...

Learning, for most people, is a social process.

If Mr. Howard thinks that he is a kind of Srinivâsa Râmânujan, good 
luck, but the statistics is against him. With a chance, he will master 
very well one or two tools, but without a more structured background, 
the creativity in the domain of software might be severely limited. If a 
necessity of refactoring his fabulous product means more learning ab 
ovo, the loss of time might be considerable.


Roman: - Christopher Howard seems to be very far from publishing papers; 
he asks us whether he should complete his B.S. In this context, 
recommending Open Source seems a bit premature.


Jerzy Karczmarczuk


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] education or experience?

2012-12-08 Thread Rustom Mody
On Sun, Dec 9, 2012 at 7:04 AM, Jerzy Karczmarczuk 
jerzy.karczmarc...@unicaen.fr wrote:

 For me, opposing experience and education is simply silly.

 Probably more than 70% of all people would learn much faster on their own
 than at school. But, learn WHAT? :

 1. Probably less than 1% would guess correctly what they SHOULD learn, and
 2. in general they will not be able to assess their own knowledge...



Very good points

Haskell kneads the avant garde type-hackery stuff with classical
(Hindley-Milner) functional programming very seamlessly.  For the
programing-pro this is a joy and a thrill.  The beginner however can get
completely unnerved that misplacing a bracket or forgetting an argument
gives error messages involving type classes, suggestions turning on/off
arcane compiler options etc etc.

FWIW I have a list of points/items trying to address this issue:

http://blog.languager.org/2012/10/functional-programming-lost-booty.html

Please note this is work-in-progress: additions/modifications are
appreciated.

On Sun, Dec 9, 2012 at 4:21 AM, Roman Cheplyaka r...@ro-che.info wrote:


 Compared to an academic career, you'll have a more real goal of making
 good software (instead of publishing papers). Also, this experience will
 be much more relevant for your future job.


Yes... CS academics delivers less than it could/should;
and whatever this delivery is, its asymptotically sub-linear.
Some of it is to do with the not-quick-enough takeup of FP in academia,
though there are obviously many other factors as well.

http://blog.languager.org/2011/02/cs-education-is-fat-and-weak-1.html
and sequel is about this: how we are not getting over the quirks of the
past history of CS in present day teaching. Here too suggestions for
modifications/ change of emphasis are appreciated.

Rusi
-- 
http://www.the-magus.in
http://blog.languager.org
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe