So, I want to learn programming...

Fayd

Diamond Member
Jun 28, 2001
7,971
2
76
www.manwhoring.com
I took 2 classes in C++ (the beginning 2 CS classes at my college) in 2004ish...before dropping out of that program and entering economics. That's all.

Since then, i've been delving into things like shell scripting, perl scripting (once) and a couple other things peripherally related to programming as points of need. IE, i needed to do something, so i learned how to do it and only it.

I'm waiting for the next semester to start, I'm going to be doing a Masters of Science in Statistics. This is of course a field that uses programming heavily. as such, I'm hoping to do something productive for my last 1.5 months of summer so i stop feeling useless.

I could pull out the C++ book we used in class, read some examples, and get going again...but I was hoping someone had a better suggestion. (we got as far as linked lists, but i realized as i tried to make an euler's method demonstration in differential equations, that I'm struggling to write a for loop. :/ )

for reference, the C++ book I have is "Introduction to Computer Science with C++", by Lambert, Knance, Naps.
 
Last edited:

douglasb

Diamond Member
Apr 11, 2005
3,163
0
76
I took 2 classes in C++ (the beginning 2 CS classes at my college) in 2004ish...before dropping out of that program and entering economics. That's all.

Since then, i've been delving into things like shell scripting, perl scripting (once) and a couple other things peripherally related to programming as points of need. IE, i needed to do something, so i learned how to do it and only it.

I'm waiting for the next semester to start, I'm going to be doing a Masters of Science in Statistics. This is of course a field that uses programming heavily. as such, I'm hoping to do something productive for my last 1.5 months of summer so i stop feeling useless.

I could pull out the C++ book we used in class, read some examples, and get going again...but I was hoping someone had a better suggestion. (we got as far as linked lists, but i realized as i tried to make an euler's method demonstration in differential equations, that I'm struggling to write a for loop. :/ )

for reference, the C++ book I have is "Introduction to Computer Science with C++", by Lambert, Knance, Naps.

What exactly is your goal here? That might helps us point you in the right direction. Do you want to right programs to compute statistics and do math-intensive tasks?
 

Fayd

Diamond Member
Jun 28, 2001
7,971
2
76
www.manwhoring.com
What exactly is your goal here? That might helps us point you in the right direction. Do you want to right programs to compute statistics and do math-intensive tasks?

basically. career goal is data analyst, so things towards that end.

I don't have a particular specific goal that i can point to, so to start with, i'm just trying to get the basics back. from there, general knowledge applicable to all fields...and from there, hopefully things related towards intended career field/field of study.
 

douglasb

Diamond Member
Apr 11, 2005
3,163
0
76
Just realized I wrote "right" instead of "write"...been a long day at work, haha.

I would say that C++ is probably a good starting point. If you're doing some REALLY complex calculations, something like FORTRAN might be faster, but C++ will probably be sufficient. You may want to leverage your C++ knowledge into learning Java or C#, which are similar in syntax. The reason for learning either of those would be in case you wanted to create anything web-based, which is really not C++'s forte. If you just need to write standalone programs, though, then C++ is an excellent place to begin.

I would try to get familiar with some of the various "math" libraries (math.h, cmath, java.math, etc.) because you will probably be relying heavily on those. There may be some specialized libraries geared towards statistical math, but I really don't know, as that is far from my area of expertise.
 

brandonb

Diamond Member
Oct 17, 2006
3,731
2
0
I've heard through peers that for data analysis type programming you generally want to stick to functional programming.

I don't have any experience with functional programming, but you may want to look into F#, or Scala as a starting point.

But I could be way off base here.
 

blinky8225

Senior member
Nov 23, 2004
564
0
0
I'm a Data Scientist. Don't bother with C++. Most data people rarely write production code. You may want to learn Java with the goal of becoming familiar with Hadoop and MapReduce.

Generally, you just need to be a good enough programmer to be able to prototype ideas. Then, production code is written by software engineers. You'll want to learn Python, SQL, and R. Perl isn't a bad choice as you'll probably need to do a lot of string processing as well.
 
Last edited:

Fayd

Diamond Member
Jun 28, 2001
7,971
2
76
www.manwhoring.com
I'm a Data Scientist. Don't bother with C++. Most data people rarely write production code. You may want to learn Java with the goal of becoming familiar with Hadoop and MapReduce.

Generally, you just need to be a good enough programmer to be able to prototype ideas. Then, production code is written by software engineers. You'll want to learn Python, SQL, and R. Perl isn't a bad choice as you'll probably need to do a lot of string processing as well.

well, as it is:

I don't want to write production code, that's not what i want out of whatever i do. rather, i want to not be lost in trying to modify code to suit my purpose,(or be able to write code should the situation call for it), and minimize periods of ineptitude when i'm actually assigned a task.

i'm going to be learning R and SAS at the school. there are classes specifically devoted to those, (and besides, for SAS, i can't afford a license so i'd have to use the school's computer lab anyways). I've been using R thus far for just absurdly simple stuff like lmfit. (and before that as we learned the basics of regression, vector calculations were just easier with R than by hand or with excel.) however, without access to datasets and reasons to do something, i'm kind of lost on R as well.

since i'm unfamiliar with apache in general, i'd think i'd be kind of lost trying to become familiar with hadoop. how much knowledge of web development in general is necessary for a data analyst working with tools like hadoop? I had applied to an internship that would have had me using hadoop....but failed in the interview >_<

edit: in reading the wiki and about pages for hadoop, i think the description i got of it in the interview is kind of...wrong. the way they described it made it sound that it's only useful for analysis of web traffic. (well, they are a web company...) but it seems it's useful for many sorts of large datasets... so if i pursue data analysis, i'll eventually have to learn it or something close to it.

question: is a programmer's understanding of java necessary for using hadoop? or is it something i can put off till later?

I have approx 1.5 years till graduation with my masters. So i have time to learn useful skills before entering the workforce. I am just trying to figure out where to start.
 
Last edited:

esun

Platinum Member
Nov 12, 2001
2,214
0
0
I'm not in statistics but I do know some people connected to that field and I concur with blinky that Python and R are very popular. R is rather domain-specific so you probably won't see a whole lot of general-purpose programming in it, so if you want to get a feel for programming in a broader scope I would look at Python first.
 

slugg

Diamond Member
Feb 17, 2002
4,722
73
91
R and SAS (although not as much as R) are the way to go. It's not "real" programming per se, as it's not used to make production software, but you definitely use it to produce results that you can use to get your work done. That's kind of the whole point of it. Decrease development time, increase the utilization of your math skills. Hit "go" and sit back. Also, while it may seem "beneath you," becoming proficient with Microsoft Excel will help you in more ways than one. Go look at tables and graphs made in R versus Excel. Which would you rather put in YOUR presentation? Oh and just wait until someone hands you a spreadsheet and expects you to work your magic quickly, or in front of them. The truth is, Excel is here to stay.

If you ever see yourself working with computer scientists or any engineers, Matlab might be a good one to look at. Don't sweat it, though... if you learn R, you can hop to Matlab in no time. The great thing about Matlab and R is that they pretty much revolve around the mathematical concepts you already know; you just need to learn the syntax, plus some quirks.

I'd say you can ignore all the non-managed programming languages. Don't bother with C, C++, and similar. Fortran might be useful, but I wouldn't touch it unless you absolutely have to. The thing about Fortran, nowadays, is that 99% of the stuff you need it to do is already implemented. You can literally find some kind of wrapper for it, if it isn't already done for you.

For a general purpose programming language, I'd suggest two languages for two different reasons, depending on your goals. If you need something quick, easy to read, and requires minimal code, Python is a good way to go. It kinda/sorta forces good code readability, so it's cool for beginners. Performance is pretty good, too. You can quickly create little apps for little specific purposes. The data manipulation capabilities are also super duper easy with Python, which is where it shines most (in my opinion).

Then there's Java, the swiss army knife of programming languages. You can literally do EVERYTHING with Java. It may not be the best solution for a particular application, but literally EVERYTHING can be done with Java on multiple platforms. Why learn Java? Well, then you can communicate your ideas to programmers and engineers. While it's not as easy as Python, it's not terribly difficult. Fun fact: NASA's Mars Rovers are powered by Java!

Most importantly, you need to think of programming as a concept. Don't get caught up on what specific languages you're working with. They're no different from screwdrivers, hammers, or chisels. Set a goal, then decide what tool to use. This keeps it fun and relevant.
 

slugg

Diamond Member
Feb 17, 2002
4,722
73
91
this language is WEIRD!

I fully agree with you. I hate Python. I hate the syntax.

Why don't you try some Java? Or if you don't mind being locked to Windows, download Visual Studio 2012 RC from Dreamspark (free because you're a student) and get started with C#. It's super easy, intuitive, and extremely well documented. Visual Studio is also the best IDE, hands down. Jumping to Java from C# is easy, and vice versa, so learning either one is fine.

I advocate C# with Visual Studio because it's an all-in-one, guaranteed to work and well documented solution. If you go the Java route, you'll run into differences between the 23498723649 flavors of Java, plus the 2349827346 combinations of development stacks, plus quirks with each different IDE... With Visual Studio, it's a one stop shop backed by the developer-friendly software giant, Microsoft. For general purpose and 90% of the needs out there, nothing beats their development tools.
 

Fayd

Diamond Member
Jun 28, 2001
7,971
2
76
www.manwhoring.com
well for now, i'll just get used to python and play with it a bit.

it seems indents are serious business. kind of different to a language like C++, where indents and spaces don't matter...
 

blinky8225

Senior member
Nov 23, 2004
564
0
0
i'm going to be learning R and SAS at the school. there are classes specifically devoted to those, (and besides, for SAS, i can't afford a license so i'd have to use the school's computer lab anyways). I've been using R thus far for just absurdly simple stuff like lmfit. (and before that as we learned the basics of regression, vector calculations were just easier with R than by hand or with excel.) however, without access to datasets and reasons to do something, i'm kind of lost on R as well.

I've found that the best way to learn R is just read general statistics books that have R code. General R books aren't that useful.

For instance if you want to learn Bayesian statistics: http://www.amazon.com/Doing-Bayesian.../dp/0123814855

how much knowledge of web development in general is necessary for a data analyst working with tools like hadoop? I had applied to an internship that would have had me using hadoop....but failed in the interview >_<

Not sure why you need to know any web development to use Hadoop. Just be familiar with the idea of MapReduce. Actually, in some cases, you don't need to know any Java to use Hadoop if there is a layer of abstraction like Hive.

question: is a programmer's understanding of java necessary for using hadoop? or is it something i can put off till later?

You should know data structures and algorithms. You don't really need to know things like threading and test-driven development, however. You might want to have some understanding of object-oriented programming, inheritance, and polymorphism, but you don't necessarily need a deep understanding.

Right now, just pick a language and come up with some basic project so you have goal to work toward. Once you learn one language and learn to think like a programmer, the rest of the languages become much easier.
 

Cerb

Elite Member
Aug 26, 2000
17,484
33
86
wow, i am not understanding regular expressions at all...
Then you're halfway there! Sometimes the best tool for any given implementation is regex, but it should always be a tool of last resort. Anyone who tells you differently hasn't debugged enough code with regexes written by other people in it .

"Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems." -Jamie Zawinski


If you want something you can learn fairly quick, check out...

1. Python (mentioned). Popular, lots of libraries included, easy to get started in. But, awkward semantics and syntax in places, and using Windows, you easily get exposed to a poor/thin wrapper around the base Windows APIs, which fail in odd ways with apparently-unrelated error messages. When your other choices are BASH, PERL, PHP, etc., it looks really nice, but... The real advantage Python has is tons of up to date learning resources.

2. Ruby. Very symbol and word heavy, but you will never become confused, and good style is practically a natural outcome of the syntax. It's hardly my favorite scripting language, but I would consider it superior to Python, as a language. Once you get the basic syntax and semantics, you'll know just what's going on, or be able to easily divine it. It is PERL's arch-nemesis. The great thing about Ruby is you won't have all the, "this is weird," issues of Python, yet will still be able to jump and work on more involving projects than pointless math problems.

3. Smalltalk. It's a fully-featured language to create a sub-language to create applications in. It totally rocks. Why should you really learn it? Because Java, C++, C#, and friends do OOP in a subtly, yet profoundly, different way. Once you write a few basic programs in Smalltalk, you'll get OOP. Other languages sacrifice features of Smalltalk for the sake of performance (to very good effect, mind you), but in the process, grasping OOP as a means to an end can get lost in that partial implementation.

4. Erlang. It's weird, its syntax is an 80s programming language trend patchwork, and it comes with...yes, a big set of telephony libraries. But, you can't help but focus on how to divide a program up into its input data set(s), working set(s), side effects, and output set(s), leading clean designs, even with test-driven development, where you're working out the best data structures and algorithms in the coding process. As much as Smalltalk focuses on flow of control, Erlang focuses on flow of data. It's no academic ivory tower language, either, like Haskell: it was made to be workhorse, and succeeded. It's worth checking out, but in addition to Smalltalk and/or Ruby, IMO, not instead of.

C# is good, and will get you closer to what you'll find people using, including a real IDE, but the learning curve can be pretty high. It also won't teach you as much just by writing with it, as a language that sticks more uniformly to its paradigms and metaphors will (IMO). Languages like Scheme, LISP, Smalltalk, Haskell, and Erlang will coerce you into thinking about your problems in terms of the language, rather than spening 90% of your thought on working the language itself, in relatively short order, as the base language, I/O facilities, and data structures are highly expressive, yet not terribly intricate, with minimal aberrant behaviors. Scheme, LISP, and Haskell are fine for what they are, but are, "out there," relative to 99% of commercial programming (LISP dialects due to pervasive use of lists; Haskell largely due to platform support needing some work, and multi-platform compilation support being in its infancy).
 
Last edited:

Fayd

Diamond Member
Jun 28, 2001
7,971
2
76
www.manwhoring.com
well, i was going through the examples at learnpython.org...

the reason i was having trouble with the regex was part of their example was wrong. at least, that's how i read it.

i got stuck at another example on json. i imagine my code was correct, but would not run, because the module necessary for json wasn't loaded. and it never stated how to load a module.

i've moved on to google university's class on python... this seems to be going much better.
 

ringtail

Golden Member
Mar 10, 2012
1,030
34
91
Here's an outside-the-box idea :

instead of python or ruby or perl, maybe invest the time into learning how to use one of either
Mathematica
or
MATLAB
or
their free open source alternative: Sage

All support stat. All require effort to learn. The first 2 are very expensive but have student license deals. All are powerfully useful.
 

slugg

Diamond Member
Feb 17, 2002
4,722
73
91
Here's an outside-the-box idea :

instead of python or ruby or perl, maybe invest the time into learning how to use one of either
Mathematica
or
MATLAB
or
their free open source alternative: Sage

All support stat. All require effort to learn. The first 2 are very expensive but have student license deals. All are powerfully useful.

+1 on Matlab. You can do some serious work in Matlab. We use it for prototyping a LOT of stuff.
 

blinky8225

Senior member
Nov 23, 2004
564
0
0
A lot of people are suggesting things that cost money like MATLAB, SAS, or C#. Those are great tools, but it really depends where you see yourself in the future. If you are leaning towards working at smaller startups, don't bother with such tools as they are probably not going to have licenses. However, if your aim is to work for bigger corporations, those are great tools to use.
 

KLin

Lifer
Feb 29, 2000
29,501
126
106
A lot of people are suggesting things that cost money like MATLAB, SAS, or C#. Those are great tools, but it really depends where you see yourself in the future. If you are leaning towards working at smaller startups, don't bother with such tools as they are probably not going to have licenses. However, if your aim is to work for bigger corporations, those are great tools to use.

You can learn c# in visual studio express. Free download.
 

ringtail

Golden Member
Mar 10, 2012
1,030
34
91
A lot of people are suggesting things that cost money like MATLAB, SAS, or C#. Those are great tools, but it really depends where you see yourself in the future. If you are leaning towards working at smaller startups, don't bother with such tools as they are probably not going to have licenses. However, if your aim is to work for bigger corporations, those are great tools to use.

Yes that's true, they cost, but the price for student versions is low, plus there's tons of free tutorials on their sites, and his school almost certainly has one or the other of these for student use in school labs.

 

slugg

Diamond Member
Feb 17, 2002
4,722
73
91
As ringtail stated... Matlab and Mathematica are less than the price of a text book. Personally, I'd go the Matlab route out of the two.

OP: like I said, don't forget Excel. In fact, today I'm wishing I were more adept in Excel. I could have saved myself a lot of time...
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |