• Forum
  • Lounge
  • I want to further open my mind about pro

 
I want to further open my mind about programming, do i choose java or python?

I wanted to mess with sockets, threads and understand how the internet and high level languages work a little better generally, but the aim is to get a better view of programing FOR general understanding (including c++)

Just think i need to see a high level language, but which one?

one mentor/friend says learn python its got all the unctions great overhead and lots of future, he also says java is a broken language (this guy is a purist though he thinks classes and other such object orientated things are awful and bad for overhead, this guy is in charge of managing all the cell phone data for a phone network, pretty interesting job he has)

the other friend/mentor says learn java! he says python is ugly and java is simple and easy, theres the bonus of us doing joint projects and that java has a brighter future




I tried adding boost and c++11 libraries but i generally lack some rudementary computer skill or knowledge or something that blocks my ability to add libraries god knows what no ones managed to explain my problem may just be a low IQ or i may have the wrong kind of brain for programmin (not that i care, am still lernin)

Last edited on
All the stuff you mentioned is easier in Python than in Java, Java has declined (I doubt it will decline much, but it has). Both of your friends are wrong IMO, but I recommend Python over Java.
if anything, java is the ugly one. But people develop a bias for something in which they are most accustomed to using. I've used all 3 and this is what i get.

1. Python is probrably the best for beginners based on its ease of uses. BUT if you learn c/c++ first then python, java, or any other functional/oop language is a given.

2. People get lost in power and features of C++ more so than the limitations of Java and Python (auto matic typing and or garbage collection ). There are no explicit pointers in either language.

3. It really boils down to choice. Do you want to do more business type apps and phone apps JAVA/objective C, or networking/scripting PYTHON, or embedded systems/AAA game engines C/C++. Its a decision of what you want to spend your time doing. I like having a good OOP library like Java but I don't like being too bounded even though Java is multiplatform, I like all of the features of C++ but I don't like the tedium of doing simple things, I've used python but not too in depth that I can say much about it.

There are 11 types of Programmers and "loosely" Computer Scientists:

a> The architect/Leader: He's basically the software engineer, he designs the software mostly. He will engage in some coding, but mostly he is in a position of leadership He will decide what library/language gets used in the creation of some program as well as manage the progress of the project over coder/intermediates. This guy is the big picture person, he may have long experience as a coder/intermediate in doing programming. He is the interface with higher management, if any.

b> The coder/code monkey: He will be using some library most of the time. He will carry out specific instructions, sometimes tedious in order to complete some task. He doesn't care too much about semantics and may prefer some area that is less thought intensive. He just wants to get his job done, see the output, and benefit. He is the one with the scripting/drag and drops or programming auxillery features of a program such as gui. He is your average programmer, and thats not a bad thing if he has potential for growth.

c> The intermediate:

He is a mix between the two, he will engage in either along side both coders and architects. He will be doing the more difficult problems that require more experience and technical difficulty (maths/logic) than normal. He utilizes logic and reasoning to accomplish his goals. He isn't really concerned with the tasks of others like the architect but with the fidelity of the project. Sometimes he will design, and sometimes he will just code. He has the best of both worlds without the semantics of higher management and business that the architect does.

Now applying these classes of programmers to people in general is an accurate assumption as well, I think so at least.

Ok, after that bit of knowledge dump from my crystallized intelligence, my point is, the sky is the limit, but overall you have to look at what you want to use the language for. If a platform, such as windows, linux, mac, samsung, iphone, etc has a compiler only for x programming language/ide and you want to be an app developer, then you use x programming language/ide. Determine what you want to do BEFORE determining what you want to learn. In doing this you inherently determine what you DON't want to learn, at least just yet, in this process.

I myself, tried first Java, then C/C++ and went to the latter right in terms of specialization. But don't get me wrong, you could be a specialist one day and then an average the next, If and only if you don't upkeep your knowledge with the times. Hence the thoughts of your possibly "purist" friend. He may have knowledge in a particular field to back him up or statistics, but no one can say any one language or its features are any better based on popularity or other tokens. Some people use some scripts/languages because they are closer to natural human language such as python or html or css. Some people who are more math/logic oriented prefer languages that challenge them in such an area or make it faster to program if they are good at logic. Examples are: cobol, basic, lisp, haskell, mindfuck and so on...
Last edited on
One more thing. If you think you have a low iq you may be right, but it can be improved. Maybe you are not used to using math/logic or are have not adjusted to formal syntax and semantics that is required in formal programming languages. My advice to you is to read, read as much as you can computer related, math related, and science related. You will begin to see patterns and trends; relationships.

Read wikipedia, find what interesting thing you can do with knowledge of programming and/or software engineering, work on an open source project. Do PLENTY of tutorials and examples. I first learned the basics of C++ from constant effort of searching the internet, from youtube to this website, to msdn, to stackoverflow, to yahoo answers, codeproject. Type any question you have into google, and there will, more often then not, be a solution to your inquiry or problem. The first language is hard its rewarding but there are more challenges than that.

The MOST IMPORTANT thing to learn logic and reasoning. Read Wikipedia alot, as much as you can you will find many things. Learn to prove a solution to a problem, by induction, contradiction, transposition, and directly. Learn what makes an invalid and valid argument and you will save yourself time. Trial and error gets you in the door, but accepting that you cannot possibly know everything yourself will keep you going. There is a reason you see greats like aristotle, socrates, descartes, newton, george bool, ada of lovalace, von neumann, einstein, liebniz, stephen hawking is because they stand upon the shoulders of other greats. They always have questions to ask, there are always questions to ask. Newton and Liebniz didnt invent calculus in a day, they first had to learn algebra, which was thousands of years old.

for every n question there is exactly n+1 more questions in the list; it just keeps going. Read even if you dislike reading, you may begin to enjoy it because you may just get inspired. For example, there are modern day greats Michio Kaku, Tyson, Hawking, Gates, and Salman Khan (pioneering socialization of education). I guarantee you that there was at least one person who thought the idea that they happened to act upon but that person didn't have the balls to do so. Even a looser example Mark Zuckerberg, with his fortune of a dice roll of being in the right place at the right time with the right background. He had a mentor in early high school years and made his first app before graduating high school, he could've been a microsoft employee if he had made a different decision. Its all about what you want to do in life and what you can see happening for your future.
Last edited on
Thanks for that, that advice works very well.

I was losing momentum and didnt really know where to study so i stopped playing minecraft and spent the day studying everything, eventualy i wound up on maths tutor; i will explore more languages but maths will make my present c++ skill more powerful.

i feel like im getting my buzz back XD
If you're a math guy, then C++ is better than Java or Python, however MATLAB may be fun for you. It sort of has it's own language and there is tons of support and tutorials for matab. In fact, half of the time when I look up butterworth or chebychev filters on wikipedia, they give matlab implementations because the language is designed for pure math. If you are looking for even higher level, then MATLAB's simulink gives graphical representations of functions, filters, or controls that you can play with.
If you're a math guy, then C++ is better than Java or Python, however MATLAB may be fun for you. It sort of has it's own language and there is tons of support and tutorials for matab. In fact, half of the time when I look up butterworth or chebychev filters on wikipedia, they give matlab implementations because the language is designed for pure math. If you are looking for even higher level, then MATLAB's simulink gives graphical representations of functions, filters, or controls that you can play with.


You can pretty much use the free open source SciPy, NumPy and matplotlib in place of Matlab.

SciPy (pronounced "Sigh Pie") is open-source software for mathematics, science, and engineering. It is also the name of a very popular conference on scientific programming with Python. The SciPy library depends on NumPy, which provides convenient and fast N-dimensional array manipulation. The SciPy library is built to work with NumPy arrays, and provides many user-friendly and efficient numerical routines such as routines for numerical integration and optimization. Together, they run on all popular operating systems, are quick to install, and are free of charge. NumPy and SciPy are easy to use, but powerful enough to be depended upon by some of the world's leading scientists and engineers. If you need to manipulate numbers on a computer and display or publish the results, give SciPy a try!


http://www.scipy.org/
Last edited on
Just another note, matlab can be used in real-world applicaitons. At work, we build physics models in MATLAB's simulink and then compile it with visual studio to create DLL extensions for our software.
But there are advantages to using Python over Matlab. First it's free.

http://stackoverflow.com/questions/5063037/should-i-switch-to-python

There is also Python(x, Y)

With Python(x,y), one can do:

interactive calculations including for example 2D and 3D plotting or symbolic maths,
simple functionnal programming (with MATLAB-like syntax) as well as powerful object-oriented programming,
scientific projects development from the simplest script to the most sophisticated application thanks to Qt development framework and Spyder development environment,
parallel computing on multicore/processors computers or even clusters (with Parallel Python),
...

Python(x,y) is a scientific-oriented Python Distribution based on Qt and Spyder - see the Plugins page. Its purpose is to help scientific programmers used to interpreted languages (such as MATLAB or IDL) or compiled languages (C/C++ or Fortran) to switch to Python. C/C++ or Fortran programmers should appreciate to reuse their code "as is" by wrapping it so it can be called directly from Python scripts.
http://code.google.com/p/pythonxy/wiki/Welcome

Enthought (not free)
The Ultimate Environment for Scientific Computing: EPD
We created the Enthought Python Distibution to provide both individual researchers and enterprise-level developers with a solid, comprehensive Python environment for scientific computing. With a single-click install, EPD subscribers have a vast array of libraries to optimize and extend their scientific applications
.
http://www.enthought.com/products/epd.php

And Sage
Sage is a free open-source mathematics software system licensed under the GPL. It combines the power of many existing open-source packages into a common Python-based interface.
Mission: Creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab.

http://www.sagemath.org/
http://vnoel.wordpress.com/2008/05/03/bye-matlab-hello-python-thanks-sage/
Last edited on
Topic archived. No new replies allowed.