Complementary language?

H

HackingYodel

Thanks for all the suggestions!

I'm going to investigate all of them as time allows. I must say that
Eiffel would most certainly expand my mind. My initial reaction, when
looking at a "Hello World!" program, was "No way!". I had just read
some of SICP and "Pascal is for building pyramids ­ imposing,
breathtaking, static structures built by armies pushing heavy blocks
into place. Lisp is for building organisms ­ imposing, breathtaking,
dynamic structures built by squads fitting fluctuating myriads of
simpler organisms into place." sprang to mind, with Eiffel replacing
Pascal in this quote. Attempting to be fair, I surfed over to
eiffel.com. Eiffel has a lot of "high-minded" concepts, and it's easy
for a rookie, such as myself, to become inundated. Ironically, while
watching Eiffel.com's presentation of "Design by Contract", my Gnome
desk top's control-panel crashed with a segmentation fault error
(seconds before the spill about how reliable DBC made Eiffel). Much I
could learn from Eiffel.

SICP was another invaluable suggestion! MIT uses it as part of their
OpenCourse program, so now I have a complete and free course in addition
to this excellent text. Thank you.

I will inspect Fortran, Mozart/Oz, Erlang, AliceML, and all other
recommendations. Thanks again for the help. Perhaps I will be able to
contribute to the Python community soon.
 
G

gabriele renzi

Alex Martelli ha scritto:

Nolo contendere (not having looked much into Alice yet), but are there
stand-alone didactical materials for Alice as there are for Oz?
> It
> seemed to me that the available materials for Alice basically take SML
> somewhat for granted, while Oz does come with tutorials which make no
> analogous assumptions. If you're recommending Alice as the second
> language for somebody whose first and only language so far is Python,
> what URLs and/or books would you point them to, for self-stufy?
>
>
> Alex


probably not, AFAIK, and that's something I did'nt think of, thanks for
pointing out.
Anyway, the Alice homepage references some ml tutorials for that subset
of the language and documentation for the specific extensions.
Probably a unified tutorial would be much better, anyway, I agree.
 
M

Mike Meyer

Objective-C is cool... on the Mac; I'm not sure how well-supported it is
elsewhere, though. In addition to C's advantages, it would let you make
Cocoa GUIs on the Mac easily (with PyObjC &c). But then, the right way
to study Obj-C from scratch is no doubt to start with C, anyway.

Objective-C is part of the Gnu Compiler Collection. As such, it's
probably easy to find a working compiler. But I agree - you probably
want to start with C.

As an aside, if you want to study Eiffel, the book to buy is _Object
Oriented Software Construction_, second edition, by Bertrand
Meyer. Everybody doing OO software should read this book, as the
lessons about constructing inheritance hierarchies are invaluable,
even if the language won't enforce them for you.

<mike
 
A

Alex Martelli

Mike Meyer said:
Objective-C is part of the Gnu Compiler Collection. As such, it's
probably easy to find a working compiler. But I agree - you probably
want to start with C.

BTW, I wouldn't give the same advice re C++ -- if C++ is what you want
to know you're probably better off studying C++ itself. But ObjC is
neatly partitioned into two sublanguages... C plus a smalltalk-like OO
part... and it seems to me that this makes C the natural starting point.

As an aside, if you want to study Eiffel, the book to buy is _Object
Oriented Software Construction_, second edition, by Bertrand
Meyer. Everybody doing OO software should read this book, as the
lessons about constructing inheritance hierarchies are invaluable,
even if the language won't enforce them for you.

Even though I'm not enthusiastic about Eiffel per se, I can second the
recommendation about Meyer's book; it's interesting and instructive as
one very thorough and well-developed vision of OOP.


Alex
 
M

Martin Drautzburg

HackingYodel said:
Does any single language do a better job in
Python's weaker areas? Would anyone care to suggest one to supplement
Python.

My first real OO language was Smalltalk. But the existing Smalltalk
implementations all have some severe shortcomings. Either they are
incomplete (Squeak), have no active community (Smalltalk/X) or they
are real expensive and bulky (VisualWorks, VisualAge). But
conceptually all these Smalltalk systems give me the feeling "thats
what OO should be like".

Python OTOH was the best compromise I could find, beeing reasonably
OO, fairly complete and free - and I am very happy with it.

I am one order of magnitude more productive in Python than in Java but
a little less productive than in Smalltalk. To wet your appetite let
me telly you, that in Python you have much shorter turnaround times
than in Java, because you don't have to compile your code after you
fixed a bug. In Smalltalk you don't even have to restart your
application, i.e. developping and running an application melts
together. It's like "doing brain surgery to yourself" as someone said.

So if you are interested to look at something even more radically OO
than Python you might want to give Squeak (http://www.squeak.org) a
try. Alan Kay, the guy wo coined the term "Object oriented" is one if
its fathers.
 
D

Donn Cave

Hmmm, I'm not sure how to parse this question. Robert Kern claimed:
"You could very easily learn more approaches to programming through
Common Lisp than three other languages", and I'm pointing out that, if
what you're after is to "learn more approaches to programming" via the
built-in features of a single language, Oz (with the CTMCP book) may
well be numero uno. Judging from the blurb on the book's back, as I
also mentioned, Norvig, hardly a slouch when it comes to Lisp, appears
to share this assessment.

What the "language shootout" can possibly have to do with this issue
entirely escapes me. Quite apart from "benchmarks are always wrong", I
don't think they're even _remotely_ trying to benchmark "how much does
learning this language teach you about different approaches to
programming" -- it would seem to be a mighty tall order to even set up a
controlled experiment to measure _that_ quantitatively!

I can't disagree very much with that, but in the vein of
answering the original question I think it's fair to
assign some weight to a language's practical utility.
For me, anyway, a language will be more instructive if
it really is a practical alternative, because then I will
obviously be much more motivated to use it.

Accordingly I should put in a vote here for Objective CAML.
Cf. http://caml.inria.fr/ . (Note the separate documentation
for Camlp4, specifically the "revised syntax". Objective CAML's
original syntax has some bad warts, but it's optional.) It's
a modern functional programming language, so it's good for
knowing what you're missing when people talk about using Python
for FP. There's also a rigorously typed OOP layer, which
introduces a few issue that Python sort of "ducks". (I haven't
spent a lot of time in the OOP layer, but I believe in a way
it formalizes "duck typing", rather than the inheritance based
type system that some languages are saddled with.) So for a
Python programmer it's all about learning different approaches
to programming, but this one is also a really competitive
language for software development. Not a gem, but not a toy.

Someone who already has Objective CAML and Python on hand
might be interested in Felix, http://felix.sourceforge.net.
I haven't actually used it, and for all I know it fails my
utility test since it is not a very mature language, but
I mention in in case anyone is interested in what the author
of the "vyper" Python implementation is up to these days.

Donn Cave, (e-mail address removed)
 
A

Alan Gauld

Hello all! I'm learning to program at home. I can't imagine a better
language than Python for this. The ideal situation, for me, would be to
study two languages at the same time. Probably sounds crazy, but it
works out better for me.

Me too, thats why my web tutorial features Python, VBSCript and
Javascript. (The previous version had BASIC and Tcl with Python)
fascinating. C, D, Objective-C, Ocaml, C++, Lisp, how is a non-tech to
choose? Does any single language do a better job in Python's weaker
areas?

C is better at low level stuff, Prolog is better at declaratie
programming and Haskell is better at functional programming.
Lisp/Scheme are good for giving a good theoretical understanding
(try the SICP and HTDP web sites). And Tcl has a really different
approach which is plain fun to grapple with :)

I chose VBScript and JavaScript because they have similar
structure to Python (traditional imperative programming
with OOP) but very different syntax. Plus they were free and
easily available (albeit with VBScript limited to Windows
users, who are 80+% of my visitors). Javascript is especially
useful since its an easy lead in to learning C/C++, Java,
even Perl to some extent and a lot of sample code sites
use those languages.

Alan G.
Author of the Learn to Program website
http://www.freenetpages.co.uk/hp/alan.gauld
 
P

Premshree Pillai

Yes, the best way to learn a new language is probably to compare it
with some other language (of the same paradigm) that you are already
familiar with. The best part about Python is that there really isn't
much "learning" involved. Python comes closest to what you'd call
"pseudocode".

If you know your English, you probably know Python. :D
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,432
Messages
2,571,680
Members
48,796
Latest member
Greg L.

Latest Threads

Top