Wednesday, December 31, 2008

[BLUG] Looking to study further in computer science

Hi there,

I think many folks have made some very important comments, let me add just one more.

I would say that it depends on what kind of programming you would like to do. I am only going to comment on the ones I know. Others may be better.

If you would like to do some web programming, then I would suggest php/mysql since many service providers support it (including Mark's company Suso). It is easy to get something up and running quickly.

I am a web developer at IU, and we are Java/J2EE as Steven noted.

If you would like to do systems programming, then C. I also agree that it is good to learn C because it's syntax is the basis for so many languages. There are a number of GUI open source projects that use C++.

I certainly enjoy what I do, so if you end up staying with programming, I think you will enjoy it.

Bob

_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

Re: [BLUG] Looking to study further in computer science

On Wed, Dec 31, 2008 at 10:40 AM, David Ernst
<david.ernst@davidernst.net> wrote:
> Very quick replies to just the parts that seemed like they were
> expecting replies from me.

Ditto, and then some.

> Maybe I just don't know enough python people. :)

My boss is a pretty pythonic person.

Every once in a while he'll see something I'm doing, and point out
that there's a particular syntactic sugar to make that sort of thing
easier in Python, when I'm about ready to handle it.

Python's list comprehensions, for instance, are incredibly cool.

> Oh, I definitely discourage programming in English. :)

That sounds like an apt description of giving an assignment. Maybe I
don't have the right libraries or something, but it's really very
difficult to program a room full of high school students to do even
simple tasks.

> also occassionally I have reason to violate it. But more to the point
> it's like "Huh? Whitespace matters? How? How many whitespace rules
> are there? I don't want to learn whitespace rules. OH yeah, I don't
> have to because I don't use Python." Again, I'm not saying it's bad,
> and I'm sure if one day I actual have occassion to learn Python I'll
> end up saying "whatever, it's totally no big deal".

Not many, and they make sense.

More importantly, freedom from semi-colons and curly braces is totally worth it.

> David

Simón

_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

Re: [BLUG] Looking to study further in computer science

Very quick replies to just the parts that seemed like they were
expecting replies from me.

>You can declare private attributes and methods inside a class by
>prepending "_" to the name. This makes it so someone won't casually be
>able to mess with it from outside the class, but it does not make them
>untouchable; there is a convoluted way of accessing the "private"
>stuff, I know.
>
>I've yet to personally find a single situation where that isn't
>enough, though. I can't even imagine a situation where that's not
>totally sufficient.

Yup, I know, and I actually agree. I often think of Damien Conway's
line in the book "Object Oriented Perl"... in talking about using the
leading underscore for private methods, he says something like "mind
you, it's only a suggestion". And, everyone obeys the suggestions, so
it works just as well in practice, and besides, practically everything
in perl is either open source or written by you, so you could always
go in and tinker with the private methods even if they really were
private... So, it's really more aesthetically that it surprises me.
Perl people seem to use perl's OO features with their tongue in their
cheeks, Python people seem to talk up Python as an awesome OO
language, so I expect them to be more serious about this stuff, even
if it's not really necessary. Maybe I just don't know enough python
people. :)

>> and you still have that "explicit self"
>> thing (c.f. http://beust.com/weblog/archives/000501.html) which is
>> kinda funny in perl but more strange in Python which seems to be more
>> proud of its OO support.
>
>Yeah, that's a little weird to wrap your head around at first, I
>suppose.The weirdest part is just declaring a method to accept an
>argument that you then don't need to pass it. After wrapping my head
>around it the first time, though, and as someone who uses Python
>pretty regularly, it's never been an issue for me.

See above... it's not that it's difficult or anything, I'm just
surprised that it's still there. The main benefit of not having it is
that it encourages you to really think more object oriented...
technically I have no problem with it.

>It's no weirder than the quirks of every other language I've learned,
>though.

true enough.

>Fr'instance, how come English infinitives are two words? How
>come your nouns don't have gender? And what's with all the exceptions
>to the rules??? ;-)

Oh, I definitely discourage programming in English. :)

>Using whitespace in a consistent and significant way greatly increases
>the readability of code, in my not quite so long-lived opinion.
>
>You did it in both your examples below; I *suspect* you're more
>against it being *enforced*, since you probably developed your own
>whitespace style before sitting in front of Python, that against
>significant use of whitespace in general. How off the mark am I?

Again, I'm not saying it makes Python bad. It is a hurdle to me
jumping on its bandwagon. Yes, I have my own whitespace style, but
also occassionally I have reason to violate it. But more to the point
it's like "Huh? Whitespace matters? How? How many whitespace rules
are there? I don't want to learn whitespace rules. OH yeah, I don't
have to because I don't use Python." Again, I'm not saying it's bad,
and I'm sure if one day I actual have occassion to learn Python I'll
end up saying "whatever, it's totally no big deal".

>> 7.times do
>> whatever
>> end
>>
[snip]
>> At least many languages have now copied perl's "foreach $x (1..7)"
>> approach, which is far more readable than the classic C-style syntax
>> that java (foolishly, imho) emulated.
>
>Is this an example of what you mean? (in Python)
>
>for i in range(7):
> whatever

yes, and way more readable than C-style.

>> Having said all that, I'll again say that I can't really recommend
>> Ruby over Python, and they are good for similar kinds of things.
>
>I don't know *anything* about Ruby, really, except that some people
>*really* dig it.

Here's another thing you should learn about Ruby: some people really
hate it! Or at least the fact time some people dig it so much makes
them hate that it's getting better acceptance than they think it
deserves.

>We've got someone here in Fort Wayne who really digs Ruby. He agrees
>with David's sentiment that he greatly prefers Ruby, and that it's
>probably pretty comparable to Python in many ways.

Hey, I don't really know Python, I even suspect I'd like it. I can't
say I greatly prefer Ruby. But I do like many things about Ruby.

David
_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

Re: [BLUG] Looking to study further in computer science

I agree with (I think) everything Barry says below... including the
part about good things about learning C... But the final paragraph
should really be the take-home message, I think. :)

David


On Wed, Dec 31, 2008 at 09:49:56AM -0500, Barry Schatz wrote:
>I don't think people should actually USE C. I just think programmers
>would vastly benefit from wrapping their minds around how the computer
>works at a low level before going out into the world. That said, there's
>a lot of critical software out there written in C that can't be replaced
>in any other language.
>
>Java avoids some of the pitfalls of C, but I think it makes things too
>easy for a first language. I also find it unbearably slow at times. I
>refuse to use OO.o because I could get my work done in the time I lose
>waiting for it to start up. But there are places where Java is the right
>tool to use, and avoiding Java just because it's Java is a mistake.
>
>The big problem with Ruby is that it's still not mature enough for
>"enterprise" development. It's great if you're writing scripts for fun
>or education, but the libraries and APIs are still not stable.
>
>Python is mature enough for pretty much everyone. Zope, Plone, Portage,
>Bzr, DenyHosts, and a bunch of other utilities suggest that Python is
>excellent for many purposes. You can compile Python into binaries for
>improved speed or just run the scripts for more flexibility.
>
>In the end, the tools don't matter as much as knowing what you are
>trying to do and being able to pick up another language if you need to.
>
>-Barry
>
>David Ernst wrote:
>> I have neither the time, the inclination, nor the depth of knowledge
>> to get into a real flame-war about this, so I really hope that this
>> doesn't degrade to that. But, Steven's message got under my skin a
>> bit, so I feel I must say something....
>>
>> Really, I don't think there's a simple "Learn this language, it's what
>> people use" answer. Here's my history in brief:
>>
>> Although I'm sure it's dating myself, I'll admit that in college I
>> learned Pascal. At the time the "real programmers" stuck up their
>> noses at Pascal and raved about C. I evenutally looked into C and now
>> want to forget everything I saw. My favorite review of C is from
>> Bertrand Meyer, roughly: "C is the closest thing we have to portable
>> assembly language". You might be interested in doing things that
>> require something like portable assembly (like, say, writing hardware
>> drivers) you should absolutely learn C or C++. Otherwise, I say, stay
>> away from it. The only other good thing I can say about it is that it
>> makes fast programs, so applications where speed is of the
>> essence... yeah. But... ick.
>>
>> Anyway, when the web was young everybody seemed to write their dynamic
>> web stuff in perl, so I learned that, because I wanted to do that.
>> Perl is definitely the language I'm most comfortable with at this
>> point. I love it for what it is, but I have been leaning against it
>> recently because of what it isn't, and that is a system that'll
>> encourage you to build a well-organized large complex application.
>> Perl was really invented to solve small problems quickly and easily,
>> and when I have a problem of that sort, I'm usually half way through
>> my perl script before I realize that I might have chosen a different
>> language. But, the Object Oriented aspects of perl are weird -- I
>> often say that they are somewhat cynical (read the official perl
>> object-oriented tutorial http://perldoc.perl.org/perltoot.html to get
>> a sense of what I mean). But basically, some people fell in love with
>> Perl so badly that they thought they should use it for everything. I
>> like to think that I kept my head a bit more than that, and when I
>> found myself fighting against the language in some applications, I
>> looked for other options.
>>
>> When Java hit the scene in the 1990s, I bought the hype... and,
>> Steven, I must say, if you think Ruby is over-hyped, you're probably
>> not remembering what it was like when Java first came out. Java was
>> going to change our whole outlook on programming. It was going to be
>> so simple that everyone was going to start programming in it, everyone
>> would forget about all other languages, and, best of all, we would all
>> "write once, run anywhere". I bought into this at the time and
>> started researching Java. What I found is that is basically offered
>> nothing to me. I do most of my work in the world of web development
>> and system administration, and Java did not show me anything I was
>> interested in. Over time, I've only become more cynical about Java,
>> as nearly every java application I've had to use has been slow, ugly,
>> and just generally depressing to use. I suspect that some people
>> overcome the ugly-java tendency and I don't notice that they are java
>> apps... and I guess that hardware has finally caught up with Java
>> Virtual Machines, because I'm now less struck by everything Java
>> seeming so slow. So, it's probably not as bad as I think of it being.
>> But, suffice to say, I still have little interest in it. However, if
>> I was looking to write desktop applications, I'm sure I'd look into it
>> more. It's surely better than C.
>>
>> Then everyone started talking about Python. I suspect Python is a
>> great language. I've barely used it. Basically, my feeling is that
>> if I had a project well-suited for Python, I'd probably just do it in
>> perl. Python's approach to object-orientation seems only slightly
>> less an afterthough than perl's... you still have no real support for
>> anything private/protected, and you still have that "explicit self"
>> thing (c.f. http://beust.com/weblog/archives/000501.html) which is
>> kinda funny in perl but more strange in Python which seems to be more
>> proud of its OO support. And, I must admit, I'm hung up on the
>> significant white space thing. I'm sure I could get over it,
>> but... why?
>>
>> So, I turned to Ruby. Sadly, I must admit that I agree with several
>> of Steven's criticisms of the language: code breaking on language
>> updates does happen, much more often than it should... It is indeed
>> slower than other comparable languages. Matz should have included
>> utf8 support from the beginning. Having said that, it's nowhere NEAR
>> as bad as Steven makes it out to be. Most strange of the things
>> Steven said is: "recommends coding practices which are staunchly to be
>> avoided in *any* other language." I don't really know what he's
>> talking about there, but in my experience the BEST thing about Ruby is
>> the coding practices that it encourages. Compared to Ruby, using PHP,
>> Python, or Perl (or, really, C++) for OO programming seem very much
>> like traditional procedural languages with OO tacked on. I can only
>> imagine he's talking about things that other languages don't even have
>> (so no wonder they should be avoided!). Classic Ruby-isms like:
>>
>> 7.times do
>> whatever
>> end
>>
>> should really make us all pause and wonder why so many languages
>> consider it perfectly natural to write things like
>>
>> for (x = 1; x <= 7; x++) {
>> whatever
>> }
>>
>> At least many languages have now copied perl's "foreach $x (1..7)"
>> approach, which is far more readable than the classic C-style syntax
>> that java (foolishly, imho) emulated.
>>
>> But really, my main point about Ruby is this: Ruby has problems, but
>> ESPECIALLY if you're thinking of learning a language for FUN, it
>> should not be ruled out (much less avoided like the plague). Perhaps
>> Steven Black and I do very different things for fun, but most of my
>> fun projects do not rely heavily on long-term code-maintenance, native
>> UTF-support, or fastest-possible execution times. Meanwhile, Ruby
>> will make you rethink the ways that many programming languages do
>> things, and even if you never use it for a serious project, you'll
>> probably expand your understanding of OO programming in ways that you
>> won't get from most of the other languages in common use.
>>
>> Having said all that, I'll again say that I can't really recommend
>> Ruby over Python, and they are good for similar kinds of things.
>>
>> You see? You get me sucked into writing long emails! Now I'm behind
>> on everything else I was going to do this evening...
>>
>> David
>>
>>
>>
>> On Tue, Dec 30, 2008 at 04:01:18PM -0500, Steven Black wrote:
>>
>>> If you want a job in the computer field, learning as much Java as
>>> possible could be a big help. It is used extensively in the enterprise
>>> sector.
>>>
>>> If you want a job at IU programming, Java is *the* language to aim for.
>>> All IU's big projects are written in Java.
>>>
>>> Java is used heavily in the "enterprise" sector. In many cases these are
>>> massive in-house applications. If I remember the job sector, around here
>>> if you want to get programming jobs and not work in Windows, you pretty
>>> much are stuck with programming in Java.
>>>
>>> Java has a large enough suite of libraries that learning more about it
>>> will benefit you in the long run rather than adding another language
>>> to your belt.
>>>
>>> If you were aiming toward systems administration, then there are a
>>> number of languages I could point you at. However for programming...
>>> Unless you're going to be programming in Windows and/or writing hardware
>>> drivers you may as well suck it up and learn the most Java possible.
>>>
>>> A lot of open source software is written in Java. And even more software
>>> plays nicely with Java. For instance, MySQL's Java interface is as fast
>>> as the C library interface. For most other languages it is slower, as it
>>> needs to use the C interface for the work, but for Java it has a true
>>> native interface.
>>>
>>> OpenOffice heavily uses Java. If you want to script OpenOffice you can
>>> basically either use Java, or use some odd version of BASIC that comes
>>> with it.
>>>
>>> Now, if you're planning to learn a language for fun, I would recommend
>>> you check out Python. Python is easy to learn and use, there is a
>>> wide set of generally well-documented libraries for it, and one of
>>> my favorite things: They've not only standardized on the programming
>>> language, they've standardized on the *documentation* language, so all
>>> Python code should be documented in English.
>>>
>>> Also, if you're planning to learn a language for fun, I would recommend
>>> you avoid Ruby like the plague. The "best practices in the industry"
>>> for Ruby produces systems which are unmaintainable and unsupportable.
>>> (Literally, you will be unable to perform a security update, let alone
>>> a distribution upgrade without breaking things.) The language runs
>>> significantly slower than any other language in the class. (Of the
>>> popular set of languages, they are only faster than Prolog.) They've
>>> failed to adopt UTF-8 or Unicode even though the language is as old
>>> as the Unicode standard, and the language was invented in Japan. The
>>> language is poorly implimented, and recommends coding practices which
>>> are staunchly to be avoided in *any* other language. It is over-hyped
>>> to the point where a lot of people mistakenly think it is good for
>>> something. In truth, it is not. (Except, perhaps as a warning.)
>>>
>>> You would be better off learning brainf**k than Ruby.
>>> http://en.wikipedia.org/wiki/Brainf**k (Wikipedia redirects that URL
>>> properly to the accurate name of the language. I have seen it called
>>> simply "BF".)
>>>
>>> Incase you've never heard of it. Here is "Hello World!" written in BF:
>>> ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++
>>> ++++++++++.>.+++.------.--------.>+.>.
>>>
>>> But really, my recommendation is: If you want to make an occupation out
>>> of programming, learn as much Java as possible. Ideally try to make some
>>> nice Open Source Java program, so you can show potential employers your
>>> mad skills.
>>>
>>> Cheers,
>>> Steven Black
>>>
>>> On Tue, Dec 30, 2008 at 01:28:22PM -0500, Ben Shewmaker wrote:
>>>
>>>> I just finished my first computer science class at IU (covering Scheme), and
>>>> next semester the class I'm taking will be covering Unix, Emacs, and especially
>>>> Java. I'm wanting to push myself to learn something more at the same time
>>>> (eventually I would love to get involved with some sort of open source
>>>> project). Would it be wise to try to learn more than one language at once in
>>>> the first place, or would I be better served trying to learn more Java than the
>>>> course covers? What types of projects are developed with Java? What other
>>>> language would be useful to try to self learn?
>>>>
>>>> Thanks for the info and Happy New Year everybody!
>>>>
>>>> _______________________________________________
>>>> BLUG mailing list
>>>> BLUG@linuxfan.com
>>>> http://mailman.cs.indiana.edu/mailman/listinfo/blug
>>>>
>>> --
>>> Steven Black <blacks@indiana.edu> / KeyID: 8596FA8E
>>> Fingerprint: 108C 089C EFA4 832C BF07 78C2 DE71 5433 8596 FA8E
>>>
>>> _______________________________________________
>>> BLUG mailing list
>>> BLUG@linuxfan.com
>>> http://mailman.cs.indiana.edu/mailman/listinfo/blug
>>>
>> _______________________________________________
>> BLUG mailing list
>> BLUG@linuxfan.com
>> http://mailman.cs.indiana.edu/mailman/listinfo/blug
>>
>
>_______________________________________________
>BLUG mailing list
>BLUG@linuxfan.com
>http://mailman.cs.indiana.edu/mailman/listinfo/blug
_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

Re: [BLUG] Looking to study further in computer science

I'm only going to comment on the Python stuff, since I'm a Python guy.

And I think that sentence serves as a fine disclaimer!

On Tue, Dec 30, 2008 at 11:04 PM, David Ernst
<david.ernst@davidernst.net> wrote:
> Then everyone started talking about Python. I suspect Python is a
> great language. I've barely used it. Basically, my feeling is that
> if I had a project well-suited for Python, I'd probably just do it in
> perl.

There's definitely something to be said for just the language you know best.

> Python's approach to object-orientation seems only slightly
> less an afterthough than perl's... you still have no real support for
> anything private/protected,

I don't know Perl so I can't really comment on it.

You can declare private attributes and methods inside a class by
prepending "_" to the name. This makes it so someone won't casually be
able to mess with it from outside the class, but it does not make them
untouchable; there is a convoluted way of accessing the "private"
stuff, I know.

I've yet to personally find a single situation where that isn't
enough, though. I can't even imagine a situation where that's not
totally sufficient.

It's in line with the philosophy that you don't need to force
programmers to strictly type their variables, I believe.

If the programmer wants to do something weird like cram an int into a
variable that previously held a boolean, let 'em; it's up to them not
to do anything stupid with that variable anyhow. If the programmer
wants to do something mega weird like go fiddle with a declared
private method, well, I guess, it's up to them not to do anything
stupid with that method anyhow.

I mean, we put up a big fence around Niagara Falls as a visual
reminder that it's a bad idea to jump in, and as a physical barrier to
protect against minor accidents. We don't make it a huge, unscalable
plexiglass barrier because that's just not necessary 99.99999999% of
the time.

And if, every few years someone climbs the fence and dives off, well...

> and you still have that "explicit self"
> thing (c.f. http://beust.com/weblog/archives/000501.html) which is
> kinda funny in perl but more strange in Python which seems to be more
> proud of its OO support.

Yeah, that's a little weird to wrap your head around at first, I
suppose.The weirdest part is just declaring a method to accept an
argument that you then don't need to pass it. After wrapping my head
around it the first time, though, and as someone who uses Python
pretty regularly, it's never been an issue for me.

It's no weirder than the quirks of every other language I've learned,
though. Fr'instance, how come English infinitives are two words? How
come your nouns don't have gender? And what's with all the exceptions
to the rules??? ;-)

For the more CSy among you, you might be interested in Guido's
explanation as to why the explicit self must stay:
<http://neopythonic.blogspot.com/2008/10/why-explicit-self-has-to-stay.html>
I, however, was bored to distraction after the first couple of
paragraphs; it's just way over my head.

> And, I must admit, I'm hung up on the
> significant white space thing. I'm sure I could get over it,
> but... why?

Why not?

Using whitespace in a consistent and significant way greatly increases
the readability of code, in my not quite so long-lived opinion.

You did it in both your examples below; I *suspect* you're more
against it being *enforced*, since you probably developed your own
whitespace style before sitting in front of Python, that against
significant use of whitespace in general. How off the mark am I?

I learned Python alongside Java, and taught Python and Java classes
concurrently. I was much less (and much less often) irritated by
Python complaining about unexpected indents than I was by Java
complaining about curly braces.

Even in curly brace languages, I try to use Python-esque whitespacing
because, well, it helps me keep track of the silly braces.

> 7.times do
> whatever
> end
>
> should really make us all pause and wonder why so many languages
> consider it perfectly natural to write things like
>
> for (x = 1; x <= 7; x++) {
> whatever
> }
>
> At least many languages have now copied perl's "foreach $x (1..7)"
> approach, which is far more readable than the classic C-style syntax
> that java (foolishly, imho) emulated.

Is this an example of what you mean? (in Python)

for i in range(7):
whatever

> Having said all that, I'll again say that I can't really recommend
> Ruby over Python, and they are good for similar kinds of things.

I don't know *anything* about Ruby, really, except that some people
*really* dig it.

We've got someone here in Fort Wayne who really digs Ruby. He agrees
with David's sentiment that he greatly prefers Ruby, and that it's
probably pretty comparable to Python in many ways.

> You see? You get me sucked into writing long emails! Now I'm behind
> on everything else I was going to do this evening...

ditto, ditto, ditto, this morning... ;-)

> David

Simón

_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

Re: [BLUG] Looking to study further in computer science

I don't think people should actually USE C. I just think programmers
would vastly benefit from wrapping their minds around how the computer
works at a low level before going out into the world. That said, there's
a lot of critical software out there written in C that can't be replaced
in any other language.

Java avoids some of the pitfalls of C, but I think it makes things too
easy for a first language. I also find it unbearably slow at times. I
refuse to use OO.o because I could get my work done in the time I lose
waiting for it to start up. But there are places where Java is the right
tool to use, and avoiding Java just because it's Java is a mistake.

The big problem with Ruby is that it's still not mature enough for
"enterprise" development. It's great if you're writing scripts for fun
or education, but the libraries and APIs are still not stable.

Python is mature enough for pretty much everyone. Zope, Plone, Portage,
Bzr, DenyHosts, and a bunch of other utilities suggest that Python is
excellent for many purposes. You can compile Python into binaries for
improved speed or just run the scripts for more flexibility.

In the end, the tools don't matter as much as knowing what you are
trying to do and being able to pick up another language if you need to.

-Barry

David Ernst wrote:
> I have neither the time, the inclination, nor the depth of knowledge
> to get into a real flame-war about this, so I really hope that this
> doesn't degrade to that. But, Steven's message got under my skin a
> bit, so I feel I must say something....
>
> Really, I don't think there's a simple "Learn this language, it's what
> people use" answer. Here's my history in brief:
>
> Although I'm sure it's dating myself, I'll admit that in college I
> learned Pascal. At the time the "real programmers" stuck up their
> noses at Pascal and raved about C. I evenutally looked into C and now
> want to forget everything I saw. My favorite review of C is from
> Bertrand Meyer, roughly: "C is the closest thing we have to portable
> assembly language". You might be interested in doing things that
> require something like portable assembly (like, say, writing hardware
> drivers) you should absolutely learn C or C++. Otherwise, I say, stay
> away from it. The only other good thing I can say about it is that it
> makes fast programs, so applications where speed is of the
> essence... yeah. But... ick.
>
> Anyway, when the web was young everybody seemed to write their dynamic
> web stuff in perl, so I learned that, because I wanted to do that.
> Perl is definitely the language I'm most comfortable with at this
> point. I love it for what it is, but I have been leaning against it
> recently because of what it isn't, and that is a system that'll
> encourage you to build a well-organized large complex application.
> Perl was really invented to solve small problems quickly and easily,
> and when I have a problem of that sort, I'm usually half way through
> my perl script before I realize that I might have chosen a different
> language. But, the Object Oriented aspects of perl are weird -- I
> often say that they are somewhat cynical (read the official perl
> object-oriented tutorial http://perldoc.perl.org/perltoot.html to get
> a sense of what I mean). But basically, some people fell in love with
> Perl so badly that they thought they should use it for everything. I
> like to think that I kept my head a bit more than that, and when I
> found myself fighting against the language in some applications, I
> looked for other options.
>
> When Java hit the scene in the 1990s, I bought the hype... and,
> Steven, I must say, if you think Ruby is over-hyped, you're probably
> not remembering what it was like when Java first came out. Java was
> going to change our whole outlook on programming. It was going to be
> so simple that everyone was going to start programming in it, everyone
> would forget about all other languages, and, best of all, we would all
> "write once, run anywhere". I bought into this at the time and
> started researching Java. What I found is that is basically offered
> nothing to me. I do most of my work in the world of web development
> and system administration, and Java did not show me anything I was
> interested in. Over time, I've only become more cynical about Java,
> as nearly every java application I've had to use has been slow, ugly,
> and just generally depressing to use. I suspect that some people
> overcome the ugly-java tendency and I don't notice that they are java
> apps... and I guess that hardware has finally caught up with Java
> Virtual Machines, because I'm now less struck by everything Java
> seeming so slow. So, it's probably not as bad as I think of it being.
> But, suffice to say, I still have little interest in it. However, if
> I was looking to write desktop applications, I'm sure I'd look into it
> more. It's surely better than C.
>
> Then everyone started talking about Python. I suspect Python is a
> great language. I've barely used it. Basically, my feeling is that
> if I had a project well-suited for Python, I'd probably just do it in
> perl. Python's approach to object-orientation seems only slightly
> less an afterthough than perl's... you still have no real support for
> anything private/protected, and you still have that "explicit self"
> thing (c.f. http://beust.com/weblog/archives/000501.html) which is
> kinda funny in perl but more strange in Python which seems to be more
> proud of its OO support. And, I must admit, I'm hung up on the
> significant white space thing. I'm sure I could get over it,
> but... why?
>
> So, I turned to Ruby. Sadly, I must admit that I agree with several
> of Steven's criticisms of the language: code breaking on language
> updates does happen, much more often than it should... It is indeed
> slower than other comparable languages. Matz should have included
> utf8 support from the beginning. Having said that, it's nowhere NEAR
> as bad as Steven makes it out to be. Most strange of the things
> Steven said is: "recommends coding practices which are staunchly to be
> avoided in *any* other language." I don't really know what he's
> talking about there, but in my experience the BEST thing about Ruby is
> the coding practices that it encourages. Compared to Ruby, using PHP,
> Python, or Perl (or, really, C++) for OO programming seem very much
> like traditional procedural languages with OO tacked on. I can only
> imagine he's talking about things that other languages don't even have
> (so no wonder they should be avoided!). Classic Ruby-isms like:
>
> 7.times do
> whatever
> end
>
> should really make us all pause and wonder why so many languages
> consider it perfectly natural to write things like
>
> for (x = 1; x <= 7; x++) {
> whatever
> }
>
> At least many languages have now copied perl's "foreach $x (1..7)"
> approach, which is far more readable than the classic C-style syntax
> that java (foolishly, imho) emulated.
>
> But really, my main point about Ruby is this: Ruby has problems, but
> ESPECIALLY if you're thinking of learning a language for FUN, it
> should not be ruled out (much less avoided like the plague). Perhaps
> Steven Black and I do very different things for fun, but most of my
> fun projects do not rely heavily on long-term code-maintenance, native
> UTF-support, or fastest-possible execution times. Meanwhile, Ruby
> will make you rethink the ways that many programming languages do
> things, and even if you never use it for a serious project, you'll
> probably expand your understanding of OO programming in ways that you
> won't get from most of the other languages in common use.
>
> Having said all that, I'll again say that I can't really recommend
> Ruby over Python, and they are good for similar kinds of things.
>
> You see? You get me sucked into writing long emails! Now I'm behind
> on everything else I was going to do this evening...
>
> David
>
>
>
> On Tue, Dec 30, 2008 at 04:01:18PM -0500, Steven Black wrote:
>
>> If you want a job in the computer field, learning as much Java as
>> possible could be a big help. It is used extensively in the enterprise
>> sector.
>>
>> If you want a job at IU programming, Java is *the* language to aim for.
>> All IU's big projects are written in Java.
>>
>> Java is used heavily in the "enterprise" sector. In many cases these are
>> massive in-house applications. If I remember the job sector, around here
>> if you want to get programming jobs and not work in Windows, you pretty
>> much are stuck with programming in Java.
>>
>> Java has a large enough suite of libraries that learning more about it
>> will benefit you in the long run rather than adding another language
>> to your belt.
>>
>> If you were aiming toward systems administration, then there are a
>> number of languages I could point you at. However for programming...
>> Unless you're going to be programming in Windows and/or writing hardware
>> drivers you may as well suck it up and learn the most Java possible.
>>
>> A lot of open source software is written in Java. And even more software
>> plays nicely with Java. For instance, MySQL's Java interface is as fast
>> as the C library interface. For most other languages it is slower, as it
>> needs to use the C interface for the work, but for Java it has a true
>> native interface.
>>
>> OpenOffice heavily uses Java. If you want to script OpenOffice you can
>> basically either use Java, or use some odd version of BASIC that comes
>> with it.
>>
>> Now, if you're planning to learn a language for fun, I would recommend
>> you check out Python. Python is easy to learn and use, there is a
>> wide set of generally well-documented libraries for it, and one of
>> my favorite things: They've not only standardized on the programming
>> language, they've standardized on the *documentation* language, so all
>> Python code should be documented in English.
>>
>> Also, if you're planning to learn a language for fun, I would recommend
>> you avoid Ruby like the plague. The "best practices in the industry"
>> for Ruby produces systems which are unmaintainable and unsupportable.
>> (Literally, you will be unable to perform a security update, let alone
>> a distribution upgrade without breaking things.) The language runs
>> significantly slower than any other language in the class. (Of the
>> popular set of languages, they are only faster than Prolog.) They've
>> failed to adopt UTF-8 or Unicode even though the language is as old
>> as the Unicode standard, and the language was invented in Japan. The
>> language is poorly implimented, and recommends coding practices which
>> are staunchly to be avoided in *any* other language. It is over-hyped
>> to the point where a lot of people mistakenly think it is good for
>> something. In truth, it is not. (Except, perhaps as a warning.)
>>
>> You would be better off learning brainf**k than Ruby.
>> http://en.wikipedia.org/wiki/Brainf**k (Wikipedia redirects that URL
>> properly to the accurate name of the language. I have seen it called
>> simply "BF".)
>>
>> Incase you've never heard of it. Here is "Hello World!" written in BF:
>> ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++
>> ++++++++++.>.+++.------.--------.>+.>.
>>
>> But really, my recommendation is: If you want to make an occupation out
>> of programming, learn as much Java as possible. Ideally try to make some
>> nice Open Source Java program, so you can show potential employers your
>> mad skills.
>>
>> Cheers,
>> Steven Black
>>
>> On Tue, Dec 30, 2008 at 01:28:22PM -0500, Ben Shewmaker wrote:
>>
>>> I just finished my first computer science class at IU (covering Scheme), and
>>> next semester the class I'm taking will be covering Unix, Emacs, and especially
>>> Java. I'm wanting to push myself to learn something more at the same time
>>> (eventually I would love to get involved with some sort of open source
>>> project). Would it be wise to try to learn more than one language at once in
>>> the first place, or would I be better served trying to learn more Java than the
>>> course covers? What types of projects are developed with Java? What other
>>> language would be useful to try to self learn?
>>>
>>> Thanks for the info and Happy New Year everybody!
>>>
>>> _______________________________________________
>>> BLUG mailing list
>>> BLUG@linuxfan.com
>>> http://mailman.cs.indiana.edu/mailman/listinfo/blug
>>>
>> --
>> Steven Black <blacks@indiana.edu> / KeyID: 8596FA8E
>> Fingerprint: 108C 089C EFA4 832C BF07 78C2 DE71 5433 8596 FA8E
>>
>> _______________________________________________
>> BLUG mailing list
>> BLUG@linuxfan.com
>> http://mailman.cs.indiana.edu/mailman/listinfo/blug
>>
> _______________________________________________
> BLUG mailing list
> BLUG@linuxfan.com
> http://mailman.cs.indiana.edu/mailman/listinfo/blug
>

_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

Re: [BLUG] Looking to study further in computer science

If you're thinking about learning Java, I encourage you to read this first: http://steve-yegge.blogspot.com/2007/12/codes-worst-enemy.html


On Tue, Dec 30, 2008 at 8:04 PM, David Ernst <david.ernst@davidernst.net> wrote:
I have neither the time, the inclination, nor the depth of knowledge
to get into a real flame-war about this, so I really hope that this
doesn't degrade to that.  But, Steven's message got under my skin a
bit, so I feel I must say something....

Really, I don't think there's a simple "Learn this language, it's what
people use" answer.  Here's my history in brief:

Although I'm sure it's dating myself, I'll admit that in college I
learned Pascal.  At the time the "real programmers" stuck up their
noses at Pascal and raved about C.  I evenutally looked into C and now
want to forget everything I saw.  My favorite review of C is from
Bertrand Meyer, roughly: "C is the closest thing we have to portable
assembly language".  You might be interested in doing things that
require something like portable assembly (like, say, writing hardware
drivers) you should absolutely learn C or C++.  Otherwise, I say, stay
away from it.  The only other good thing I can say about it is that it
makes fast programs, so applications where speed is of the
essence... yeah.  But... ick.

Anyway, when the web was young everybody seemed to write their dynamic
web stuff in perl, so I learned that, because I wanted to do that.
Perl is definitely the language I'm most comfortable with at this
point.  I love it for what it is, but I have been leaning against it
recently because of what it isn't, and that is a system that'll
encourage you to build a well-organized large complex application.
Perl was really invented to solve small problems quickly and easily,
and when I have a problem of that sort, I'm usually half way through
my perl script before I realize that I might have chosen a different
language.  But, the Object Oriented aspects of perl are weird -- I
often say that they are somewhat cynical (read the official perl
object-oriented tutorial http://perldoc.perl.org/perltoot.html to get
a sense of what I mean).  But basically, some people fell in love with
Perl so badly that they thought they should use it for everything.  I
like to think that I kept my head a bit more than that, and when I
found myself fighting against the language in some applications, I
looked for other options.

When Java hit the scene in the 1990s, I bought the hype... and,
Steven, I must say, if you think Ruby is over-hyped, you're probably
not remembering what it was like when Java first came out.  Java was
going to change our whole outlook on programming. It was going to be
so simple that everyone was going to start programming in it, everyone
would forget about all other languages, and, best of all, we would all
"write once, run anywhere".  I bought into this at the time and
started researching Java.  What I found is that is basically offered
nothing to me.  I do most of my work in the world of web development
and system administration, and Java did not show me anything I was
interested in.  Over time, I've only become more cynical about Java,
as nearly every java application I've had to use has been slow, ugly,
and just generally depressing to use.  I suspect that some people
overcome the ugly-java tendency and I don't notice that they are java
apps... and I guess that hardware has finally caught up with Java
Virtual Machines, because I'm now less struck by everything Java
seeming so slow.  So, it's probably not as bad as I think of it being.
But, suffice to say, I still have little interest in it.  However, if
I was looking to write desktop applications, I'm sure I'd look into it
more.  It's surely better than C.

Then everyone started talking about Python.  I suspect Python is a
great language.  I've barely used it.  Basically, my feeling is that
if I had a project well-suited for Python, I'd probably just do it in
perl.  Python's approach to object-orientation seems only slightly
less an afterthough than perl's... you still have no real support for
anything private/protected, and you still have that "explicit self"
thing (c.f. http://beust.com/weblog/archives/000501.html) which is
kinda funny in perl but more strange in Python which seems to be more
proud of its OO support.  And, I must admit, I'm hung up on the
significant white space thing.  I'm sure I could get over it,
but... why?

So, I turned to Ruby.  Sadly, I must admit that I agree with several
of Steven's criticisms of the language: code breaking on language
updates does happen, much more often than it should... It is indeed
slower than other comparable languages.  Matz should have included
utf8 support from the beginning.  Having said that, it's nowhere NEAR
as bad as Steven makes it out to be.  Most strange of the things
Steven said is: "recommends coding practices which are staunchly to be
avoided in *any* other language."  I don't really know what he's
talking about there, but in my experience the BEST thing about Ruby is
the coding practices that it encourages.  Compared to Ruby, using PHP,
Python, or Perl (or, really, C++) for OO programming seem very much
like traditional procedural languages with OO tacked on.  I can only
imagine he's talking about things that other languages don't even have
(so no wonder they should be avoided!).  Classic Ruby-isms like:

7.times do
 whatever
end

should really make us all pause and wonder why so many languages
consider it perfectly natural to write things like

for (x = 1; x <= 7; x++) {
   whatever
}

At least many languages have now copied perl's "foreach $x (1..7)"
approach, which is far more readable than the classic C-style syntax
that java (foolishly, imho) emulated.

But really, my main point about Ruby is this: Ruby has problems, but
ESPECIALLY if you're thinking of learning a language for FUN, it
should not be ruled out (much less avoided like the plague).  Perhaps
Steven Black and I do very different things for fun, but most of my
fun projects do not rely heavily on long-term code-maintenance, native
UTF-support, or fastest-possible execution times.  Meanwhile, Ruby
will make you rethink the ways that many programming languages do
things, and even if you never use it for a serious project, you'll
probably expand your understanding of OO programming in ways that you
won't get from most of the other languages in common use.

Having said all that, I'll again say that I can't really recommend
Ruby over Python, and they are good for similar kinds of things.

You see?  You get me sucked into writing long emails!  Now I'm behind
on everything else I was going to do this evening...

David



On Tue, Dec 30, 2008 at 04:01:18PM -0500, Steven Black wrote:
>If you want a job in the computer field, learning as much Java as
>possible could be a big help. It is used extensively in the enterprise
>sector.
>
>If you want a job at IU programming, Java is *the* language to aim for.
>All IU's big projects are written in Java.
>
>Java is used heavily in the "enterprise" sector. In many cases these are
>massive in-house applications. If I remember the job sector, around here
>if you want to get programming jobs and not work in Windows, you pretty
>much are stuck with programming in Java.
>
>Java has a large enough suite of libraries that learning more about it
>will benefit you in the long run rather than adding another language
>to your belt.
>
>If you were aiming toward systems administration, then there are a
>number of languages I could point you at. However for programming...
>Unless you're going to be programming in Windows and/or writing hardware
>drivers you may as well suck it up and learn the most Java possible.
>
>A lot of open source software is written in Java. And even more software
>plays nicely with Java. For instance, MySQL's Java interface is as fast
>as the C library interface. For most other languages it is slower, as it
>needs to use the C interface for the work, but for Java it has a true
>native interface.
>
>OpenOffice heavily uses Java. If you want to script OpenOffice you can
>basically either use Java, or use some odd version of BASIC that comes
>with it.
>
>Now, if you're planning to learn a language for fun, I would recommend
>you check out Python. Python is easy to learn and use, there is a
>wide set of generally well-documented libraries for it, and one of
>my favorite things: They've not only standardized on the programming
>language, they've standardized on the *documentation* language, so all
>Python code should be documented in English.
>
>Also, if you're planning to learn a language for fun, I would recommend
>you avoid Ruby like the plague. The "best practices in the industry"
>for Ruby produces systems which are unmaintainable and unsupportable.
>(Literally, you will be unable to perform a security update, let alone
>a distribution upgrade without breaking things.) The language runs
>significantly slower than any other language in the class. (Of the
>popular set of languages, they are only faster than Prolog.) They've
>failed to adopt UTF-8 or Unicode even though the language is as old
>as the Unicode standard, and the language was invented in Japan. The
>language is poorly implimented, and recommends coding practices which
>are staunchly to be avoided in *any* other language. It is over-hyped
>to the point where a lot of people mistakenly think it is good for
>something. In truth, it is not. (Except, perhaps as a warning.)
>
>You would be better off learning brainf**k than Ruby.
>http://en.wikipedia.org/wiki/Brainf**k (Wikipedia redirects that URL
>properly to the accurate name of the language. I have seen it called
>simply "BF".)
>
>Incase you've never heard of it. Here is "Hello World!" written in BF:
>++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++
>++++++++++.>.+++.------.--------.>+.>.
>
>But really, my recommendation is: If you want to make an occupation out
>of programming, learn as much Java as possible. Ideally try to make some
>nice Open Source Java program, so you can show potential employers your
>mad skills.
>
>Cheers,
>Steven Black
>
>On Tue, Dec 30, 2008 at 01:28:22PM -0500, Ben Shewmaker wrote:
>> I just finished my first computer science class at IU (covering Scheme), and
>> next semester the class I'm taking will be covering Unix, Emacs, and especially
>> Java.  I'm wanting to push myself to learn something more at the same time
>> (eventually I would love to get involved with some sort of open source
>> project).  Would it be wise to try to learn more than one language at once in
>> the first place, or would I be better served trying to learn more Java than the
>> course covers?  What types of projects are developed with Java?  What other
>> language would be useful to try to self learn?
>>
>> Thanks for the info and Happy New Year everybody!
>
>> _______________________________________________
>> BLUG mailing list
>> BLUG@linuxfan.com
>> http://mailman.cs.indiana.edu/mailman/listinfo/blug
>
>
>--
>Steven Black <blacks@indiana.edu> / KeyID: 8596FA8E
>Fingerprint: 108C 089C EFA4 832C BF07  78C2 DE71 5433 8596 FA8E
>
>_______________________________________________
>BLUG mailing list
>BLUG@linuxfan.com
>http://mailman.cs.indiana.edu/mailman/listinfo/blug
_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

Tuesday, December 30, 2008

Re: [BLUG] Looking to study further in computer science

I have neither the time, the inclination, nor the depth of knowledge
to get into a real flame-war about this, so I really hope that this
doesn't degrade to that. But, Steven's message got under my skin a
bit, so I feel I must say something....

Really, I don't think there's a simple "Learn this language, it's what
people use" answer. Here's my history in brief:

Although I'm sure it's dating myself, I'll admit that in college I
learned Pascal. At the time the "real programmers" stuck up their
noses at Pascal and raved about C. I evenutally looked into C and now
want to forget everything I saw. My favorite review of C is from
Bertrand Meyer, roughly: "C is the closest thing we have to portable
assembly language". You might be interested in doing things that
require something like portable assembly (like, say, writing hardware
drivers) you should absolutely learn C or C++. Otherwise, I say, stay
away from it. The only other good thing I can say about it is that it
makes fast programs, so applications where speed is of the
essence... yeah. But... ick.

Anyway, when the web was young everybody seemed to write their dynamic
web stuff in perl, so I learned that, because I wanted to do that.
Perl is definitely the language I'm most comfortable with at this
point. I love it for what it is, but I have been leaning against it
recently because of what it isn't, and that is a system that'll
encourage you to build a well-organized large complex application.
Perl was really invented to solve small problems quickly and easily,
and when I have a problem of that sort, I'm usually half way through
my perl script before I realize that I might have chosen a different
language. But, the Object Oriented aspects of perl are weird -- I
often say that they are somewhat cynical (read the official perl
object-oriented tutorial http://perldoc.perl.org/perltoot.html to get
a sense of what I mean). But basically, some people fell in love with
Perl so badly that they thought they should use it for everything. I
like to think that I kept my head a bit more than that, and when I
found myself fighting against the language in some applications, I
looked for other options.

When Java hit the scene in the 1990s, I bought the hype... and,
Steven, I must say, if you think Ruby is over-hyped, you're probably
not remembering what it was like when Java first came out. Java was
going to change our whole outlook on programming. It was going to be
so simple that everyone was going to start programming in it, everyone
would forget about all other languages, and, best of all, we would all
"write once, run anywhere". I bought into this at the time and
started researching Java. What I found is that is basically offered
nothing to me. I do most of my work in the world of web development
and system administration, and Java did not show me anything I was
interested in. Over time, I've only become more cynical about Java,
as nearly every java application I've had to use has been slow, ugly,
and just generally depressing to use. I suspect that some people
overcome the ugly-java tendency and I don't notice that they are java
apps... and I guess that hardware has finally caught up with Java
Virtual Machines, because I'm now less struck by everything Java
seeming so slow. So, it's probably not as bad as I think of it being.
But, suffice to say, I still have little interest in it. However, if
I was looking to write desktop applications, I'm sure I'd look into it
more. It's surely better than C.

Then everyone started talking about Python. I suspect Python is a
great language. I've barely used it. Basically, my feeling is that
if I had a project well-suited for Python, I'd probably just do it in
perl. Python's approach to object-orientation seems only slightly
less an afterthough than perl's... you still have no real support for
anything private/protected, and you still have that "explicit self"
thing (c.f. http://beust.com/weblog/archives/000501.html) which is
kinda funny in perl but more strange in Python which seems to be more
proud of its OO support. And, I must admit, I'm hung up on the
significant white space thing. I'm sure I could get over it,
but... why?

So, I turned to Ruby. Sadly, I must admit that I agree with several
of Steven's criticisms of the language: code breaking on language
updates does happen, much more often than it should... It is indeed
slower than other comparable languages. Matz should have included
utf8 support from the beginning. Having said that, it's nowhere NEAR
as bad as Steven makes it out to be. Most strange of the things
Steven said is: "recommends coding practices which are staunchly to be
avoided in *any* other language." I don't really know what he's
talking about there, but in my experience the BEST thing about Ruby is
the coding practices that it encourages. Compared to Ruby, using PHP,
Python, or Perl (or, really, C++) for OO programming seem very much
like traditional procedural languages with OO tacked on. I can only
imagine he's talking about things that other languages don't even have
(so no wonder they should be avoided!). Classic Ruby-isms like:

7.times do
whatever
end

should really make us all pause and wonder why so many languages
consider it perfectly natural to write things like

for (x = 1; x <= 7; x++) {
whatever
}

At least many languages have now copied perl's "foreach $x (1..7)"
approach, which is far more readable than the classic C-style syntax
that java (foolishly, imho) emulated.

But really, my main point about Ruby is this: Ruby has problems, but
ESPECIALLY if you're thinking of learning a language for FUN, it
should not be ruled out (much less avoided like the plague). Perhaps
Steven Black and I do very different things for fun, but most of my
fun projects do not rely heavily on long-term code-maintenance, native
UTF-support, or fastest-possible execution times. Meanwhile, Ruby
will make you rethink the ways that many programming languages do
things, and even if you never use it for a serious project, you'll
probably expand your understanding of OO programming in ways that you
won't get from most of the other languages in common use.

Having said all that, I'll again say that I can't really recommend
Ruby over Python, and they are good for similar kinds of things.

You see? You get me sucked into writing long emails! Now I'm behind
on everything else I was going to do this evening...

David

On Tue, Dec 30, 2008 at 04:01:18PM -0500, Steven Black wrote:
>If you want a job in the computer field, learning as much Java as
>possible could be a big help. It is used extensively in the enterprise
>sector.
>
>If you want a job at IU programming, Java is *the* language to aim for.
>All IU's big projects are written in Java.
>
>Java is used heavily in the "enterprise" sector. In many cases these are
>massive in-house applications. If I remember the job sector, around here
>if you want to get programming jobs and not work in Windows, you pretty
>much are stuck with programming in Java.
>
>Java has a large enough suite of libraries that learning more about it
>will benefit you in the long run rather than adding another language
>to your belt.
>
>If you were aiming toward systems administration, then there are a
>number of languages I could point you at. However for programming...
>Unless you're going to be programming in Windows and/or writing hardware
>drivers you may as well suck it up and learn the most Java possible.
>
>A lot of open source software is written in Java. And even more software
>plays nicely with Java. For instance, MySQL's Java interface is as fast
>as the C library interface. For most other languages it is slower, as it
>needs to use the C interface for the work, but for Java it has a true
>native interface.
>
>OpenOffice heavily uses Java. If you want to script OpenOffice you can
>basically either use Java, or use some odd version of BASIC that comes
>with it.
>
>Now, if you're planning to learn a language for fun, I would recommend
>you check out Python. Python is easy to learn and use, there is a
>wide set of generally well-documented libraries for it, and one of
>my favorite things: They've not only standardized on the programming
>language, they've standardized on the *documentation* language, so all
>Python code should be documented in English.
>
>Also, if you're planning to learn a language for fun, I would recommend
>you avoid Ruby like the plague. The "best practices in the industry"
>for Ruby produces systems which are unmaintainable and unsupportable.
>(Literally, you will be unable to perform a security update, let alone
>a distribution upgrade without breaking things.) The language runs
>significantly slower than any other language in the class. (Of the
>popular set of languages, they are only faster than Prolog.) They've
>failed to adopt UTF-8 or Unicode even though the language is as old
>as the Unicode standard, and the language was invented in Japan. The
>language is poorly implimented, and recommends coding practices which
>are staunchly to be avoided in *any* other language. It is over-hyped
>to the point where a lot of people mistakenly think it is good for
>something. In truth, it is not. (Except, perhaps as a warning.)
>
>You would be better off learning brainf**k than Ruby.
>http://en.wikipedia.org/wiki/Brainf**k (Wikipedia redirects that URL
>properly to the accurate name of the language. I have seen it called
>simply "BF".)
>
>Incase you've never heard of it. Here is "Hello World!" written in BF:
>++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++
>++++++++++.>.+++.------.--------.>+.>.
>
>But really, my recommendation is: If you want to make an occupation out
>of programming, learn as much Java as possible. Ideally try to make some
>nice Open Source Java program, so you can show potential employers your
>mad skills.
>
>Cheers,
>Steven Black
>
>On Tue, Dec 30, 2008 at 01:28:22PM -0500, Ben Shewmaker wrote:
>> I just finished my first computer science class at IU (covering Scheme), and
>> next semester the class I'm taking will be covering Unix, Emacs, and especially
>> Java. I'm wanting to push myself to learn something more at the same time
>> (eventually I would love to get involved with some sort of open source
>> project). Would it be wise to try to learn more than one language at once in
>> the first place, or would I be better served trying to learn more Java than the
>> course covers? What types of projects are developed with Java? What other
>> language would be useful to try to self learn?
>>
>> Thanks for the info and Happy New Year everybody!
>
>> _______________________________________________
>> BLUG mailing list
>> BLUG@linuxfan.com
>> http://mailman.cs.indiana.edu/mailman/listinfo/blug
>
>
>--
>Steven Black <blacks@indiana.edu> / KeyID: 8596FA8E
>Fingerprint: 108C 089C EFA4 832C BF07 78C2 DE71 5433 8596 FA8E
>
>_______________________________________________
>BLUG mailing list
>BLUG@linuxfan.com
>http://mailman.cs.indiana.edu/mailman/listinfo/blug
_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

[BLUG] A brave monkey, indeed.

The Heron may have come, and the Ibex may be at the forefront, but
how's our old friend the Gibbon?

I just saw some video that confirms this, at least: it's still as Gutsy as ever!

http://www.youtube.com/watch?v=cbLhEWrAmRU

Hope you're having a lovely holiday season! :-D

Simón

_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

Re: [BLUG] Looking to study further in computer science

If you want a job in the computer field, learning as much Java as
possible could be a big help. It is used extensively in the enterprise
sector.

If you want a job at IU programming, Java is *the* language to aim for.
All IU's big projects are written in Java.

Java is used heavily in the "enterprise" sector. In many cases these are
massive in-house applications. If I remember the job sector, around here
if you want to get programming jobs and not work in Windows, you pretty
much are stuck with programming in Java.

Java has a large enough suite of libraries that learning more about it
will benefit you in the long run rather than adding another language
to your belt.

If you were aiming toward systems administration, then there are a
number of languages I could point you at. However for programming...
Unless you're going to be programming in Windows and/or writing hardware
drivers you may as well suck it up and learn the most Java possible.

A lot of open source software is written in Java. And even more software
plays nicely with Java. For instance, MySQL's Java interface is as fast
as the C library interface. For most other languages it is slower, as it
needs to use the C interface for the work, but for Java it has a true
native interface.

OpenOffice heavily uses Java. If you want to script OpenOffice you can
basically either use Java, or use some odd version of BASIC that comes
with it.

Now, if you're planning to learn a language for fun, I would recommend
you check out Python. Python is easy to learn and use, there is a
wide set of generally well-documented libraries for it, and one of
my favorite things: They've not only standardized on the programming
language, they've standardized on the *documentation* language, so all
Python code should be documented in English.

Also, if you're planning to learn a language for fun, I would recommend
you avoid Ruby like the plague. The "best practices in the industry"
for Ruby produces systems which are unmaintainable and unsupportable.
(Literally, you will be unable to perform a security update, let alone
a distribution upgrade without breaking things.) The language runs
significantly slower than any other language in the class. (Of the
popular set of languages, they are only faster than Prolog.) They've
failed to adopt UTF-8 or Unicode even though the language is as old
as the Unicode standard, and the language was invented in Japan. The
language is poorly implimented, and recommends coding practices which
are staunchly to be avoided in *any* other language. It is over-hyped
to the point where a lot of people mistakenly think it is good for
something. In truth, it is not. (Except, perhaps as a warning.)

You would be better off learning brainf**k than Ruby.
http://en.wikipedia.org/wiki/Brainf**k (Wikipedia redirects that URL
properly to the accurate name of the language. I have seen it called
simply "BF".)

Incase you've never heard of it. Here is "Hello World!" written in BF:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++
++++++++++.>.+++.------.--------.>+.>.

But really, my recommendation is: If you want to make an occupation out
of programming, learn as much Java as possible. Ideally try to make some
nice Open Source Java program, so you can show potential employers your
mad skills.

Cheers,
Steven Black

On Tue, Dec 30, 2008 at 01:28:22PM -0500, Ben Shewmaker wrote:
> I just finished my first computer science class at IU (covering Scheme), and
> next semester the class I'm taking will be covering Unix, Emacs, and especially
> Java. I'm wanting to push myself to learn something more at the same time
> (eventually I would love to get involved with some sort of open source
> project). Would it be wise to try to learn more than one language at once in
> the first place, or would I be better served trying to learn more Java than the
> course covers? What types of projects are developed with Java? What other
> language would be useful to try to self learn?
>
> Thanks for the info and Happy New Year everybody!

> _______________________________________________
> BLUG mailing list
> BLUG@linuxfan.com
> http://mailman.cs.indiana.edu/mailman/listinfo/blug


--
Steven Black <blacks@indiana.edu> / KeyID: 8596FA8E
Fingerprint: 108C 089C EFA4 832C BF07 78C2 DE71 5433 8596 FA8E

_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

Re: [BLUG] Looking to study further in computer science

I learned Java in the context of an Object-Oriented Programming class,
which taught C++ at the same time. If you want to understand the OOP
paradigm a little better, it helps to learn the same concepts in more
than one language. You might also learn Perl, PHP or Python, as they are
also Object-Oriented.

Java is used for all sorts of things. Web-based video players (Freedom
Fry), SSL VPN clients (Sabre VPN), and office software (OO.o) can be
written with Java.

I recommend learning C if you want to learn more low-level stuff and
Python if you want to do more in less time. Fewer and fewer people are
writing in C these days, but I think learning dynamic memory management
and pointers in C should be mandatory education for professional
programmers. Python has gained a lot of popularity lately for being
powerful and extensible without being difficult to use.

And if you really want to put hair on your chest, learn Perl.

-Barry

Ben Shewmaker wrote:
> I just finished my first computer science class at IU (covering
> Scheme), and next semester the class I'm taking will be covering Unix,
> Emacs, and especially Java. I'm wanting to push myself to learn
> something more at the same time (eventually I would love to get
> involved with some sort of open source project). Would it be wise to
> try to learn more than one language at once in the first place, or
> would I be better served trying to learn more Java than the course
> covers? What types of projects are developed with Java? What other
> language would be useful to try to self learn?
>
> Thanks for the info and Happy New Year everybody!
> ------------------------------------------------------------------------
>
> _______________________________________________
> BLUG mailing list
> BLUG@linuxfan.com
> http://mailman.cs.indiana.edu/mailman/listinfo/blug
>

_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

Re: [BLUG] technology gripe of the day

I've had the same complaint, before, actually.

More profitable to conform to existing "standards", I guess, however
stupid and clunky that might be, than to innovate a more reasonable
interface.

To innovate a new interface, you'd have to start with a phone and
headset that only work with each other and push that way of doing
things in the hope that it catches on.

Just a thought.

Simón

On Tue, Dec 30, 2008 at 1:03 PM, Mark Krenz <mark@slugbug.org> wrote:
>
> Why do wireless headsets still need handset lifters if you want to be
> able to control the call from the headset? This is stupid, they are
> both electronics devices, just talk to each other. Heck, the hook
> button under the handset is just an electronic switch. But yet if you
> buy a top of the line headset from Plantronics, you have to have this
> handset lifter do something physical to pick up or hang up the call. So
> without the lifter I have to first press a button on the headset to turn
> that off, then press the headset button on the phone to hang it up.
>
> --
> Mark Krenz
> Bloomington Linux Users Group
> http://www.bloomingtonlinux.org/

_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

[BLUG] Looking to study further in computer science

I just finished my first computer science class at IU (covering Scheme), and next semester the class I'm taking will be covering Unix, Emacs, and especially Java.  I'm wanting to push myself to learn something more at the same time (eventually I would love to get involved with some sort of open source project).  Would it be wise to try to learn more than one language at once in the first place, or would I be better served trying to learn more Java than the course covers?  What types of projects are developed with Java?  What other language would be useful to try to self learn?

Thanks for the info and Happy New Year everybody!

[BLUG] technology gripe of the day

Why do wireless headsets still need handset lifters if you want to be
able to control the call from the headset? This is stupid, they are
both electronics devices, just talk to each other. Heck, the hook
button under the handset is just an electronic switch. But yet if you
buy a top of the line headset from Plantronics, you have to have this
handset lifter do something physical to pick up or hang up the call. So
without the lifter I have to first press a button on the headset to turn
that off, then press the headset button on the phone to hang it up.

--
Mark Krenz
Bloomington Linux Users Group
http://www.bloomingtonlinux.org/
_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

[BLUG] Alphagrip keyboard/trackball

Anyone on the list have an Alphagrip?

http://www.alphagrips.com/

--
Mark Krenz
Bloomington Linux Users Group
http://www.bloomingtonlinux.org/
_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

Friday, December 19, 2008

Re: [BLUG] Kazehakase web browser

On further use, Kazehakase is actually pretty pleasant. Tweaking the
preferences is kinda convoluted, but I managed to find and set what I
needed to make it useful. It handles the pages I go to and scored 75/100
on acid3.

Barry Schatz wrote:
> Hmmm... It's in Debian, so I'll give it a try.
>
> I like that you can plug in a webkit backend, but I'm not having much
> success getting it to work. The gecko backend feels like FireFox, so
> that's familiar at least.
>
> I also like that you can change the UI across three levels of
> complexity. Scratch that. I think it's a good idea. I don't know if I
> like it, since I usually keep my UI as sparse and simple as I can. I can
> see it being really handy for shared computers or multiple people using
> the same screen.
>
> I'll give it a try, but I don't think it will displace my default
> browser anytime soon. Thanks for the tip, though.
>
> -Barry
>
> Mark Krenz wrote:
>
>> Anyone here use the Kazehakase web browser? I just came across it
>> this morning and it seems very nice. It also feels a lot like it picked
>> up where Galeon left off, which is great for power users. It has a lot
>> of powerful features, check it out:
>>
>> http://sourceforge.jp/frs/index.php?group_id=388&release_id=2211
>>
>> You can probably also install it through your package manager. I could
>> in Ubuntu at least.
>>
>>
>>
>>
>
>

_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

Re: [BLUG] Opening InDesign Files?

On Fri, Dec 19, 2008 at 6:28 AM, Matt Zink <matthewzin@gmail.com> wrote:
Hello All:
Does anyone know of an open source program that will open Adobe InDesign files?  I tried to no avail with Scribus.  Just curious, and thanks.  Hope everyone is having a grand holiday season.
Matt

The only way I know of is to export them to PDF or EPS, and then use Inkscape. I have had pretty unpleasant experiences with that in the past though.

  -ab

 

_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug


Re: [BLUG] Kazehakase web browser

Hmmm... It's in Debian, so I'll give it a try.

I like that you can plug in a webkit backend, but I'm not having much
success getting it to work. The gecko backend feels like FireFox, so
that's familiar at least.

I also like that you can change the UI across three levels of
complexity. Scratch that. I think it's a good idea. I don't know if I
like it, since I usually keep my UI as sparse and simple as I can. I can
see it being really handy for shared computers or multiple people using
the same screen.

I'll give it a try, but I don't think it will displace my default
browser anytime soon. Thanks for the tip, though.

-Barry

Mark Krenz wrote:
> Anyone here use the Kazehakase web browser? I just came across it
> this morning and it seems very nice. It also feels a lot like it picked
> up where Galeon left off, which is great for power users. It has a lot
> of powerful features, check it out:
>
> http://sourceforge.jp/frs/index.php?group_id=388&release_id=2211
>
> You can probably also install it through your package manager. I could
> in Ubuntu at least.
>
>
>

_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

[BLUG] Opening InDesign Files?

Hello All:
Does anyone know of an open source program that will open Adobe InDesign files?  I tried to no avail with Scribus.  Just curious, and thanks.  Hope everyone is having a grand holiday season.
Matt

[BLUG] Kazehakase web browser

Anyone here use the Kazehakase web browser? I just came across it
this morning and it seems very nice. It also feels a lot like it picked
up where Galeon left off, which is great for power users. It has a lot
of powerful features, check it out:

http://sourceforge.jp/frs/index.php?group_id=388&release_id=2211

You can probably also install it through your package manager. I could
in Ubuntu at least.


--
Mark Krenz
Bloomington Linux Users Group
http://www.bloomingtonlinux.org/
_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

Friday, December 12, 2008

Re: [BLUG] FSF lawsuit against Cicso

On Fri, Dec 12, 2008 at 01:24:55PM -0500, Barry Schatz wrote:
> So... opinions yet?

I think this is probably one of the places where there are relatively
few oppinions on the issue.

Snipped from http://www.fsf.org/news/2008-12-cisco-suit
|"We began working with Cisco in 2003 to help them establish a process
|for complying with our software licenses, and the initial changes were
|very promising," explained Brett Smith, licensing compliance engineer at
|the FSF. "Unfortunately, they never put in the effort that was necessary
|to finish the process, and now five years later we have still not seen
|a plan for compliance. As a result, we believe that legal action is the
|best way to restore the rights we grant to all users of our software."

When I worked at Be, Inc. we were contacted by the FSF when we didn't
properly distribute everytihng. They're really quite friendly folks,
willing to work with companies to get things to comply.

They had 5 years. I don't care how many restructurings a particular
group has within that time. (That's the only reason I can think of as to
a legitimate reason this would have been delayed.) It just doesn't take
that long to get everything in order.

It is quite simple: If it is linked in to a GPLed application (even
dynamically), it becomes GPLed. If this included things that licenses
or legislation prevents from being readily handled, then you should
have structured things to avoid this in the first place. (Fortunately,
due to the GPL v3, if they added code to which they have patents, they
basically reliquish the patents.)

When it comes to some items, things get simpler. The LGPL allows you
to modify libraries, but perhaps not the application itself. In this
case you sometimes need to provide object files of the closed source
components so the LGPLed parts can be modified and relinked. (Due to the
Tivoization claused in the (L)GPL v3, they need to allow people to put
this modified executible on the devices.)

Then again, if they were actually using older pre-GPL3 versions of the
software (this has been on-going for 5 years, and they may not have
been using current versions even then) then things get simpler still.
You don't lose your patents by using them in GPLed code, and you do not
have to provide a method for people to upload the modified code to the
device.

It looks like Oracle was trying to call a bluff. They've clearly not
been paying attention, though, because the FSF has done this sort of
thing before. You don't have to accept the GPL license, but the GPL
license is the only thing granting you rights outside of standard
copyright law. If you don't accept it, you can neither modify the code,
nor distribute it to other people.

Cheers,

--
Steven Black <blacks@indiana.edu> / KeyID: 8596FA8E
Fingerprint: 108C 089C EFA4 832C BF07 78C2 DE71 5433 8596 FA8E

Re: [BLUG] FSF lawsuit against Cicso

On Fri, Dec 12, 2008 at 1:24 PM, Barry Schatz <sorbetninja@gmail.com> wrote:
> So... opinions yet?
>
> -Barry Schatz

It stinks!

-Jay Sherman

;-)
_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

[BLUG] FSF lawsuit against Cicso

If you haven't already heard, the Free Software Foundation (FSF) is
filing a lawsuit against Cisco for copyright violation. Apparently,
Cisco hasn't been good about following the GPL that much of its software
stack is licensed on. The Software Freedom Law Center (SFLC) is
representing the FSF.

FSF news site:
http://www.fsf.org/news/2008-12-cisco-suit

FSF blog:
http://www.fsf.org/blogs/licensing/2008-12-cisco-complaint

Ars Technica:
http://arstechnica.com/news.ars/post/20081211-free-software-foundation-lawsuit-against-cisco-a-first.html

So... opinions yet?

-Barry Schatz
_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug

Wednesday, December 10, 2008

Re: [BLUG] December meeting?

Steven Black wrote:
> On Wed, Dec 10, 2008 at 12:52:51PM -0500, Barry Schatz wrote:
>
>> I know there are Vi keybindings in Bash, but I figured since I'm
>> switching shells anyway I might as well learn as much as I can.
>>
>
> I understand. VI-like bindings are neat, but they can mess with your
> ability to assist coworkers. (This is why I don't use a Dvorak keymap.)
>
You can rebind keys to make Vi usable in Dvorak. As soon as I get a
keyboard I don't hate, I'm switching that too.

>> Zsh has a bunch of features that I'm only getting started with. Spelling
>> correction in typed commands is one. The completion is also more
>> friendly. I'm not purging bash or anything, just trying a new shell and
>> seeing if it fits my needs better. I might even switch to Ksh someday.
>>
>
> My understanding is that on all regards ZSH is generally better than
> KSH. That's just rumor, of course, but I don't ever really hear people
> speaking highly of KSH. I only hear people using pdksh because they
> needed to use some craptastic commercial UNIX-like system which only has
> KSH. They install pdksh on the Linux machines so their users will have
> the same shell experience, and their scripts will continue working.
>
> This is a far cry from the people using ZSH. ZSH isn't the default shell
> anywhere, yet is readily available and easily portable. It is also good
> enough that it continues to thrive in a shell world where even Solaris
> has dropped the Korn Shell, and only the BSD folks still think C-shells
> are cool.
>
> In fact, I really think I've heard that ZSH can do everything KSH can do
> but better. I've also heard rumors that scripting the ZSH is less likely
> to have some of the security concerns that plague BASH. Of course, these
> are both unfounded rumors that I "heard somewhere", so I may be wrong.
>
I have heard most of these things. I also heard that it's faster in a
variety of synthetic benchmarks. There was an article in LinuxFormat (I
think it was LinuxFormat...) comparing various shells and Zsh came out
on top.

> ------------------------------------------------------------------------
>
> _______________________________________________
> BLUG mailing list
> BLUG@linuxfan.com
> http://mailman.cs.indiana.edu/mailman/listinfo/blug
>

_______________________________________________
BLUG mailing list
BLUG@linuxfan.com
http://mailman.cs.indiana.edu/mailman/listinfo/blug