which one do you prefer? python with C# or java?

Y

Yesterday Paid

I'm planning to learn one more language with my python.
Someone recommended to do Lisp or Clojure, but I don't think it's a
good idea(do you?)
So, I consider C# with ironpython or Java with Jython.
It's a hard choice...I like Visual studio(because my first lang is VB6
so I'm familiar with that)
but maybe java would be more useful out of windows.

what do you think?
 
B

becky_lewis

Lisp and Clojure are functional languages. Learning one of those (or a
similar language) will help by providing you with a fairly different
perspective on how to approach programming problems. Personally I
think learning Lisp or Clojure is good advice.

However, if you're really adamant about going with Java or C# I'd
probably go with Java. Not only can you play around on multiple
platforms but should you decide to give Clojure a go in the future
it'll come in handy :) (Clojure runs on the JVM so you can make use of
Java libraries directly from it).
 
P

Paul Rubin

Yesterday Paid said:
I'm planning to learn one more language with my python.
Someone recommended to do Lisp or Clojure, but I don't think it's a
good idea(do you?)

Why do you want to do that?

First of all, why not stick with learning one language at a time? Get
familiar with one before moving on to the next.

Second, what is your goal in wanting to learn multiple languages? The
right advice to give you depends on what your goals are.

In my opinion (this is not a universally accepted notion), Python and
Clojure are at least spiritually similar to Lisp. So if you know one of
them, the other two should be easy. That might be good or bad depending
on your goals. Good because it means you get extra tools without a lot
of extra effort. Bad because you're learning something close to
something you already know, rather than something new and different.

I'd suggest C# after Python, out of languages in your list. Not because
C# is great or anything like that, but because it's different, so you
get exposed to more concepts. After C# you might try Haskell, which
will expand your horizons even further.
 
H

Harald Hanche-Olsen

[becky_lewis said:
Lisp and Clojure are functional languages.

No, they're not.

But you can (and often will) do quite a bit of functional programming in
Lisp, as it lends itself quite naturally to that way of thinking.

But in (Common) Lisp you also have CLOS, which is a rather different way
to do object oriented programming. It will widen your horizon in more
than one way.

The advice to learn just one programming language at a time seems sound,
though. I would take it, if I were you.
 
B

becky_lewis

My mistake about Lisp being purely functional (I have very little
experience with common Lisp itself), though Clojure is. That doesn't
change my point, to which you appear to agree, Lisp and Clojure teach
folks a different way of approaching problems, which is always
useful :)

[becky_lewis said:
Lisp and Clojure are functional languages.

No, they're not.

But you can (and often will) do quite a bit of functional programming in
Lisp, as it lends itself quite naturally to that way of thinking.

But in (Common) Lisp you also have CLOS, which is a rather different way
to do object oriented programming. It will widen your horizon in more
than one way.

The advice to learn just one programming language at a time seems sound,
though. I would take it, if I were you.

--
* Harald Hanche-Olsen     <URL:http://www.math.ntnu.no/~hanche/>
- It is undesirable to believe a proposition
  when there is no ground whatsoever for supposing it is true.
  -- Bertrand Russell
 
M

Matej Cepl

I'm planning to learn one more language with my python.

Just my personal experience, but after passively learning many many
languages, I came to the conclusion that I (and I suppose many others)
am able to learn only one platform well. The point is that you are never
interested in learning *a language*, everybody who has at least some
touch with programming can learn most languages in one session in the
afternoon. But nobody is interested in you knowing a language, you need
to know the platform with all libraries, standards, style, and culture.
And *that* demands you focus on one language completely.

Yes, of course, you will know couple of other languages and be able to
write a thing in it (everybody needs to know a bit of JavaScript these
days, and if you are on Unix/Linux,Mac OS X, you need to know a bit of
shell scripting), but that's different from "Zen & Writing" (that's my
personal homage to recently deceased Ray Bradbury and his essay
http://www.worldcat.org/search?qt=wikipedia&q=isbn:1877741094). The
language in which you write those 100 lines of code per day (that's my
rough estimate of an equivalent for Bradbury's daily portion of prose to
be written) should be IMHO only the one.

I think the similarity with story writing makes a lot of sense. Yes,
many people speak and write more than one language (me included, English
is not my first language), but that's not the same as writing stories
professionally. At the moment, I can think only about one successful
famous writer how changed his main language (Kundera), but I don't
recall ATM any writer who would be writing in multiple languages at one
time. (yes, switches between main programming languages is more
possible, because programming languages are endlessly less complicated
than natural ones)

Just my 0.02CZK

Matěj
 
C

Chris Angelico

Just my personal experience, but after passively learning many many
languages, I came to the conclusion that I (and I suppose many others) am
able to learn only one platform well. The point is that you are never
interested in learning *a language*, everybody who has at least some touch
with programming can learn most languages in one session in the afternoon.
But nobody is interested in you knowing a language, you need to know the
platform with all libraries, standards, style, and culture. And *that*
demands you focus on one language completely.

Currently, I'm working professionally in Pike, C++, bash, PHP, and
Javascript, but only one platform: Unix. Everything's done to our own
internal philosophy, which mostly aligns with the Unix notion of
building small tools that link together (rather than monoliths for
entire tasks). Learning and managing multiple languages isn't itself a
problem, though I do recommend learning just one at a time until you
stop considering yourself a novice (master a half-dozen languages or
so, that's a start).

ChrisA
 
P

Paul Rubin

Matej Cepl said:
The point is that you are never interested in learning *a language*,
everybody who has at least some touch with programming can learn most
languages in one session in the afternoon.

Really, that's only if the new language is pretty much the same as the
old ones, in which case you haven't really learned much of anything.
Languages that use interesting new concepts are challenges in their own
right.

Here is an interesting exercise for statically typed languages,
unsuitable for Python but not too hard in Haskell:

http://blog.tmorris.net/understanding-practical-api-design-static-typing-and-functional-programming/

It doesn't require the use of any libraries, standards, style, or
culture. I can tell you as a fairly strong Python programemr who got
interested in Haskell a few years ago, it took me much longer than an
afternoon to get to the point of being able to solve a problem like the
above. It required absorbing new concepts that Python simply does not
contain. But it gave me the ability to do things I couldn't do before.
That's a main reason studying new languages is challenging and
worthwhile.
 
M

Matej Cepl

Really, that's only if the new language is pretty much the same as the
old ones, in which case you haven't really learned much of anything.
Languages that use interesting new concepts are challenges in their own
right.

Well, I could at least passively read many languages (starting with
Pascal, C, and unsuccessful attempt to learn Prolog, so even statically
typed languages are not that mysterious to me), so learning new ones is
not that problem. And yes, to be completely honest, functional languages
are my weakest part (although I have used Emacs for some time, I still
haven't learned writing in any Lisp properly).

Matěj
 
P

Paul Rubin

Matej Cepl said:
Well, I could at least passively read many languages (starting with
Pascal, C, and unsuccessful attempt to learn Prolog, so even
statically typed languages are not that mysterious to me),

I wouldn't count Pascal or C as statically typed in any interesting
way. C++ (template generics), ML, or Haskell would be more meaningful.
Prolog is worth spending more time on, and it's on my own list.
so learning new ones is not that problem. And yes, to be completely
honest, functional languages are my weakest part (although I have used
Emacs for some time, I still haven't learned writing in any Lisp
properly).

You might start with Abelson and Sussman's classic book:
http://mitpress.mit.edu/sicp
 
R

rusi

Just my personal experience, but after passively learning many many
languages, I came to the conclusion that I (and I suppose many others)
am able to learn only one platform well. The point is that you are never
interested in learning *a language*, everybody who has at least some
touch with programming can learn most languages in one session in the
afternoon. But nobody is interested in you knowing a language, you need
to know the platform with all libraries, standards, style, and culture.
And *that* demands you focus on one language completely.

Hi Matěj! If this question is politically incorrect please forgive me.
Do you speak only one (natural) language -- English?
And if this set is plural is your power of expression identical in
each language?

Speaking for myself I can think of examples in Hindi, Marathi,
Sanskrit and Tamil that when translated into English are so tame as to
almost completely miss the point...
 
B

Broad Liyn

在 2012å¹´6月10日星期日UTC+8上åˆ6æ—¶44分44秒,Yesterday Paid写é“:
I'm planning to learn one more language with my python.
Someone recommended to do Lisp or Clojure, but I don't think it's a
good idea(do you?)
So, I consider C# with ironpython or Java with Jython.
It's a hard choice...I like Visual studio(because my first lang is VB6
so I'm familiar with that)
but maybe java would be more useful out of windows.

what do you think?

of course java is the best option in my opinion.There is no need to providemany evidences that java is better than c# because its advantages are really obvious.But java IDEs are not as convenient as visual studio.

Anyway,it's on your choice.No matter what you option is,keeping going on itwill make your skill more and more mature.Programming languages are just tools,programmer themselves are the key.
 
C

Corey Richardson

of course java is the best option in my opinion.There is no need to
provide many evidences that java is better than c# because its
advantages are really obvious.

Not as obvious as you'd imagine... I can't think of many.
 
8

88888 Dihedral

Yesterday Paidæ–¼ 2012å¹´6月10日星期日UTC+8上åˆ6時44分44秒寫é“:
I'm planning to learn one more language with my python.
Someone recommended to do Lisp or Clojure, but I don't think it's a
good idea(do you?)
So, I consider C# with ironpython or Java with Jython.
It's a hard choice...I like Visual studio(because my first lang is VB6
so I'm familiar with that)
but maybe java would be more useful out of windows.

what do you think?

If the goal is to write programs to be cross-platform,
then I suggest some utilities like p2c (pascal to c), and f2c (fortran to c),
and etc. to be available.

Also source programs which are structured well with unit tests do help a lot
in translations to other computer languages.
 
A

Alexander Blinne

Here is an exercise from the book that you might like to try in Python:

http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-24.html#%_idx_3894

It's not easy ;-)

I liked this exercize. At first I wrote my own merger.
def merge(*iterables):
iterables = list(iterables)
current = [i.next() for i in iterables]
last = None
while True:
m = min(current)
while last == m:
p = current.index(m)
try:
current[p] = iterables[p].next()
except StopIteration:
del current[p]
del iterables[p]
if len(current) == 0:
raise StopIteration
m = min(current)
yield m
last = m

But then I realised the vast library of python already contained (a
faster) one (propably based upon
<http://code.activestate.com/recipes/491285-iterator-merge/>), which
just needed to be enhanced a little bit to allow duplicate items to be
removed:
import heapq

def skipdups(m):
l = k = m.next()
yield k
while True:
while l == k:
k = m.next()
yield k
l = k

def gen_s():
s = [1]
m = skipdups(heapq.merge(*[(lambda j: (k*j for k in s))(n) for n in [2,3,5]]))
yield s[0]
while True:
k = m.next()
s.append(k)
yield k

Now gen_s() generates the wanted sequence.

Greetings
 
T

Tomasz Rola

I'm planning to learn one more language with my python.
Someone recommended to do Lisp or Clojure, but I don't think it's a
good idea(do you?)
So, I consider C# with ironpython or Java with Jython.
It's a hard choice...I like Visual studio(because my first lang is VB6
so I'm familiar with that)
but maybe java would be more useful out of windows.

what do you think?

If you don't know C yet, I second recommendation to learn it. It is a very
70-tish and 80-tish language, but it is still very relevant if you want to
call yourself a programmer (rather than a hobbyist, with all credits due
to clever genius hobbyists out there). There are things I would rather do
in C than in any other language (like, writing a Python interpreter or
Linux kernel - wait, what you say they have been written already?). Also,
it gives one a way to handtune the code quite a lot (at expense of time,
but this is sometimes acceptable), to the point where next choice is
assembly (and results not necessarily better)...

Later on, since C and C++ share quite a bit, you can gradually include C++
elements into your code, thus writing in a kinda "bettered C" (compiled
with C++ compiler), using constructs like "const" to make your programs
more correct. And you will learn to not use "new" for variables, which is
good thing. However, some C++ constructs include performance penalty, so
it is good to not better it too much.

Later on, you could choose from the list:

- Common Lisp - "nice industrial standard" (depends on one's preferred
definition of "nice", of course, as well as "industrial" and "standard")

- Racket - Scheme on steroids, with IDE, JIT and crossplatform-ity (I can
think of somebody writing Python/Racket to be used in this environment but
it is hard to imagine someone doing the other direction, so go figure ;-)

http://www.reddit.com/r/programming/comments/i1slm/amazing_tutorial_demonstrating_the_power_of/

http://hashcollision.org/brainfudge/

)

- Haskell or Ocaml - but I have a feeling Ocaml is developing at slower
pace now, with many people choosing Haskell (I guess they sometimes
curse themselves for this, because behaviour of code in Haskell is a bit
hard to predict, sometimes).

If you want to delve into Java world, well, I consider Java an unbearably
ugly hog. When I was younger and fearless I programmed a bit in Java, but
nowadays, the only way I myself could swallow this would be to use some
other language on top of it (Scala, Clojure or Kaffe).

C# as a - kind of - Java clone from MS, is not really so attractive to me.

(Yes, both Java and C# have some merits in some situations, so do COBOL,
VB and Fortran but I tend to avoid such situations and thus life gets much
simpler).

If you would like to bend your mind a little, Racket or Forth or Smalltalk
(in a form of SqueakVM) could do the job. Every time I read about
Smalltalk and think how Java took over, I mentally weep.

Regards,
Tomasz Rola

--
** A C programmer asked whether computer had Buddha's nature. **
** As the answer, master did "rm -rif" on the programmer's home **
** directory. And then the C programmer became enlightened... **
** **
** Tomasz Rola mailto:[email protected] **
 
T

Tomasz Rola

If you want to delve into Java world, well, I consider Java an unbearably
ugly hog. When I was younger and fearless I programmed a bit in Java, but
nowadays, the only way I myself could swallow this would be to use some
other language on top of it (Scala, Clojure or Kaffe).

Uhuh, I meant Kawa, not Kaffe:

http://en.wikipedia.org/wiki/Kawa_(Scheme_implementation)

Regards,
Tomasz Rola

--
** A C programmer asked whether computer had Buddha's nature. **
** As the answer, master did "rm -rif" on the programmer's home **
** directory. And then the C programmer became enlightened... **
** **
** Tomasz Rola mailto:[email protected] **
 
M

Matej Cepl

Hi Matěj! If this question is politically incorrect please forgive me.
Do you speak only one (natural) language -- English?
And if this set is plural is your power of expression identical in
each language?

I have written about that later ... no, I am a native Czech, but I have
passive Russian, and active English. But there is a difference ... I can
read and enjoy beautiful texts in Russian or English (couple of months
read Eugen Onegin in Russian and that's just a beauty! or C.S.Lewis ...
oh my!) but I will never be able to write professionally in these
languages. I can write (as evidenced by this message) somehow in
English, but I cannot imagine that I would be ever professional art
writer or (even worse) poet. I could imagine (if spent couple of
thousands of days working on it) that I would be a Czech professional
writer though.

Matěj
 

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

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,818
Latest member
Brigette36

Latest Threads

Top