PDA

View Full Version : Why Learn Basic Programming Skills?


Pages : [1] 2

traynor
10-29-2014, 07:31 PM
So you can write your own handicapping applications is the obvious answer, and it is a LOT easier than many would have you believe. If you find BuckysRoom.org a little too simplistic (and incredibly boring) take a look at:

https://www.youtube.com/watch?v=kMzH3tfP6f8

It is a quick overview of the basic (first or second semester) computer science courses at Stanford (the entire series of 26 or so videos all available free on YouTube), it explains a lot of the why that the dry, musty, incredibly slow, boring, repetitious offerings at other institutions (can anyone say, "MIT"?) turn off most new to the field by dwelling on the trivia of how.

The first semester (CS106a) is (IMO) as good as David Malan's CS50 from Harvard (also available in its entirety on YouTube). I suggest you watch the video above (which is actually the first class of the second intro course (CS106b rather than the first class, CS106b) to learn why you should learn the basics of CS (solving problems rather than just fiddling with computers).

It is also a joy to listen to people who are able to communicate at vocal communication speed, rather than meandering along carefully formulating what they want to say as if writing (rather than speaking)--and doing little more than conveying the impression they don't really understand the topics they presume to teach. The instructors of both CS106a and CS106b--along with David Malan's and CS50 at Harvard--make learning complex topics both easy and enjoyable. The way things should be--but rarely are.

traynor
10-29-2014, 07:55 PM
My mistake--CS106a and CS106b are quarter courses, not semester. Life moves a bit quicker on the left coast.

First class, CS106a, is seriously recommended if you have little or no prior programming knowledge (or have self-taught basic programming skills):

http://web.stanford.edu/class/cs106a/

The quality of instruction (in both classes) is superb.

traynor
10-30-2014, 03:43 AM
If you think basic programming skills (all that are really needed for most "handicapping" applications) are "too difficult" or that you are "too old to learn new ways" it is only because you have had poor instructors or poor instruction.

Take a couple of hours out of your otherwise hectic life to see how the real instructors teach computer science. It is liable to make a world of difference in how you think about computers, and using computers to do the specific things you want them to do.

David Malan's CS50 is one of the few classes in which the students are so impressed with the quality of instruction that they (enthusiastically) applaud. Not quite the dry, boring, ponderous nonsense sold as "computer science" by many other colleges and universities.

https://www.youtube.com/watch?v=79gAss0K1TI&list=PLhQjrBD2T382Lqs7bsMl6WRDA9anaEzBe

DeltaLover
10-30-2014, 08:12 AM
Also:
The very best introduction to programming, that I always suggest to novices, is the following book:

http://web.mit.edu/alexmv/6.S184/sicp.pdf

On YT you can also find a complete sequence of the related MIT lectures:
https://www.youtube.com/watch?v=2Op3QLzMgSY

Take your time, spend a few months going through this material and you will probably learn enough about programming computeres to assist you in your research.

In my opinion, it is way better to go through these material instead of just starting from Excel or Access that curiously appear to be so popular here in PA


2Op3QLzMgSY

traynor
10-30-2014, 12:24 PM
Also:
The very best introduction to programming, that I always suggest to novices, is the following book:

http://web.mit.edu/alexmv/6.S184/sicp.pdf

On YT you can also find a complete sequence of the related MIT lectures:
https://www.youtube.com/watch?v=2Op3QLzMgSY

Take your time, spend a few months going through this material and you will probably learn enough about programming computeres to assist you in your research.

In my opinion, it is way better to go through these material instead of just starting from Excel or Access that curiously appear to be so popular here in PA





Good advice, with one disagreement. I think a novice will get further faster with the CS106a from Stanford than the equivalent from MIT (which is great if you are already familiar with some of the basic information). Jumping straight into the fine points of sort algorithms might be a bit arcane to a newbie.

David Malans is far and away the best instructor, but the CS50 from Harvard places too much emphasis on the trendy web-related material (JavaScript, etc.) rather than the basic foundation novices need.

That basic foundation is covered elegantly, engagingly, and thoroughly by Mehran Sahami in CS106a, and expanded in CS106b. One thing it won't do--that so many dry, boring presentations like that from MIT manage to do--is completely turn off a novice from pursuing further studies in computer science.

The "talking heads" model of instruction is seriously deficient. It is also pervasive. One should be able to distinguish good instruction from bad instruction, benefit from the former and soundly reject the latter. I did a lot of research on the consortium attempting to fill the gaping deficiencies in computer science education (Monash, BlueJ, and others). The world needs more David Malans' and Mehran Sahami's. Fortunately, both Stanford and Harvard seem to realize fully that teaching is more than just talking and reading prepared notes.

traynor
10-30-2014, 12:47 PM
I strongly recommend that one should watch (at least part of) the MIT intro lecture. Then watch:

https://www.youtube.com/watch?v=nHxnvrvfLsA&list=PLhQjrBD2T3827MXcOrlJChW2B-gIH81Lx

badcompany
10-30-2014, 04:32 PM
Great stuff, guys.

Took a few programming classes in college, but didn't develop the skills.

This could make a good winter project.

As an aside, I see this a the future of education, with the best teachers teaching the most students.

HUSKER55
10-31-2014, 01:10 PM
I was thinking of taking an adult class in javascript at the local college. I was wondering, where do you download the data from?

I called Twinspires and they said all they have is pdf.

so, how do you do this?

Thanks!

DeltaLover
10-31-2014, 01:13 PM
I was thinking of taking an adult class in javascript at the local college. I was wondering, where do you download the data from?

I called Twinspires and they said all they have is pdf.

so, how do you do this?

Thanks!

What data are you referring to?

HUSKER55
10-31-2014, 02:31 PM
just the PP's for right now.

traynor
10-31-2014, 04:30 PM
I was thinking of taking an adult class in javascript at the local college. I was wondering, where do you download the data from?

I called Twinspires and they said all they have is pdf.

so, how do you do this?

Thanks!

Try Bucky first:
https://buckysroom.org/videos.php

JavaScript is mainly for animation and websites. It might not be the best way to start (unless you are building a website).

badcompany
10-31-2014, 06:15 PM
If you think basic programming skills (all that are really needed for most "handicapping" applications) are "too difficult" or that you are "too old to learn new ways" it is only because you have had poor instructors or poor instruction.

Take a couple of hours out of your otherwise hectic life to see how the real instructors teach computer science. It is liable to make a world of difference in how you think about computers, and using computers to do the specific things you want them to do.

David Malan's CS50 is one of the few classes in which the students are so impressed with the quality of instruction that they (enthusiastically) applaud. Not quite the dry, boring, ponderous nonsense sold as "computer science" by many other colleges and universities.

https://www.youtube.com/watch?v=79gAss0K1TI&list=PLhQjrBD2T382Lqs7bsMl6WRDA9anaEzBe

I'm enjoying this, so far. You're right. He does present the material in an engaging way.

He's a pretty looking guy for a computer genius. He probably nails a lot of coeds at Harvard. :cool:

HUSKER55
10-31-2014, 06:37 PM
he seems to be pushing the c program. how tough is that program ?

headhawg
10-31-2014, 07:43 PM
he seems to be pushing the c program. how tough is that program ?If you're new to programming, forget about C or C++. In fact, forget about object-oriented programming altogether if you have never coded before. Try learning something like BASIC first. It's been around forever, and the syntax is pretty straightforward. Liberty Basic has a demo version and there's also FreeBasic which is...um...free. Learn to program procedurally and work your way up to OOP. (If you're really adventurous you can use Visual Studio 2013 Express to learn Visual Basic .Net, but I think that might be too much of a challenge for n00bs. Microsoft Virtual Academy has a beginner course in VB .Net -- also free. You could watch the first couple of videos and take the assessments to see if you're ready for it.)

I only watched a few minutes of each, but unless you think that you could get into Stanford or MIT those are not the best videos for beginners imo. Beginners aren't going to do any bitwise functions, so I'm not sure why someone would need to know binary at a beginner level. I don't have something that I can recommend offhand, but anyone trying to write code should learn programming logic and how to create a flowchart. You could know every command/function in a programming language but if your logic is flawed and you can't get your program from point A to point B, what's the point of knowing that you can make a call to the Windows API?

And I'm not shooting down suggestions by traynor or DL. They are much better programmers than I am. But because of that I think that they may be overestimating the average person's coding ability.

MJC922
10-31-2014, 08:53 PM
If you're new to programming, forget about C or C++. In fact, forget about object-oriented programming altogether if you have never coded before. Try learning something like BASIC first. It's been around forever, and the syntax is pretty straightforward. Liberty Basic has a demo version and there's also FreeBasic which is...um...free. Learn to program procedurally and work your way up to OOP. (If you're really adventurous you can use Visual Studio 2013 Express to learn Visual Basic .Net, but I think that might be too much of a challenge for n00bs. Microsoft Virtual Academy has a beginner course in VB .Net -- also free. You could watch the first couple of videos and take the assessments to see if you're ready for it.)

I only watched a few minutes of each, but unless you think that you could get into Stanford or MIT those are not the best videos for beginners imo. Beginners aren't going to do any bitwise functions, so I'm not sure why someone would need to know binary at a beginner level. I don't have something that I can recommend offhand, but anyone trying to write code should learn programming logic and how to create a flowchart. You could know every command/function in a programming language but if your logic is flawed and you can't get your program from point A to point B, what's the point of knowing that you can make a call to the Windows API?

And I'm not shooting down suggestions by traynor or DL. They are much better programmers than I am. But because of that I think that they may be overestimating the average person's coding ability.

Good post. For me when we talk about getting complete novices off the ground with programming I think back to an old book like John Smiley's Learn To Program VB6, maybe there's something more current on the order of that. VBA and VB6 have a lot of common ground between them. I started with Basic on the VIC20 and Commodore64. Being just a young kid at the time I would've benefitted a great deal from formal instruction and never got it which didn't help matters, so I can see where others are coming from. On the other hand it's a different time, I have a hunch that it may be more efficient for the aspiring computer handicapper / researcher to choose software tools first like Excel / Access and learn hands on as never before by leveraging online resources, tutorials, forums etc. I guess the big question is what do people want to do, what type of output are they looking to get out of the software.

Hoofless_Wonder
11-01-2014, 12:53 AM
....In my opinion, it is way better to go through these material instead of just starting from Excel or Access that curiously appear to be so popular here in PA

No mystery. Excel and Access are self-contained programming applications and GUIs to boot. I would be more critical of M$ products if the smartest guy I ever worked with didn't use Excel for almost all his programming and analysis needs - and he was the lead ground system engineer for a NASA satellite program.

What I don't understand, as a self-admitted "challenged" programmer, is why there hasn't been more popular tools like SAS for programming. It seems that every time I turn around there's a new "hot" scripting or programming tool, which always seems to require some serious effort to learn, implement and maintain. I worked with SAS back in the mid 1980s, and it still seems leaps and bounds ahead of what some of the "modern" tools have.

And now the latest thing I have to deal with is integration of established software apps with MicroSoft's Power Shell, which is nothing more than adding some nice unix commands to DOS. Check.

Robert Goren
11-01-2014, 08:40 AM
This stuff is being taught in middle school here. To old people like me, it like trying to learning Chinese. The kids could put us oldsters out the handicapping business in a hurry, if they were interested in horse racing, which they are not. Horse racing may be last refuge for the non techie gambler. It seems to me a little tech knowledge, if put to good use(a big if), is a huge advantage.

DeltaLover
11-01-2014, 10:24 AM
If you're new to programming, forget about C or C++. In fact, forget about object-oriented programming altogether if you have never coded before. Try learning something like BASIC first. It's been around forever, and the syntax is pretty straightforward. Liberty Basic has a demo version and there's also FreeBasic which is...um...free. Learn to program procedurally and work your way up to OOP. (If you're really adventurous you can use Visual Studio 2013 Express to learn Visual Basic .Net, but I think that might be too much of a challenge for n00bs. Microsoft Virtual Academy has a beginner course in VB .Net -- also free. You could watch the first couple of videos and take the assessments to see if you're ready for it.)

I would vote against any flavour of Basic (especially proprietary implementations like Liberty Basic or VB) since it is not only a think of the past, but is also represents a very limited programming paradigm. I think that more declarative languages like Python or Ruby are perfect choices for the novice, since they are not only easy to start using but the also can be used for very advanced applications and have huge open source resources, fulfilling any imaginable need.

When it comes to more imperative languages, especially C and C++, they certainly have lost momentum and although they will remain alive for as long the operating systems continue to be implemented on them, their user base is shrinking as time goes by and are replaced by more declarative languages that are easier and quicker to develop with.

DeltaLover
11-01-2014, 10:28 AM
I would be more critical of M$ products if the smartest guy I ever worked with didn't use Excel for almost all his programming and analysis needs - and he was the lead ground system engineer for a NASA satellite program.

Chances are that this guy was not a professional programmer but a scientist who was using the tool he knew the best. I can assure you, that although Excel and OO, both can be useful when working with data, they are never considered as an alternative to 'real' programming languages.

DeltaLover
11-01-2014, 10:33 AM
What I don't understand, as a self-admitted "challenged" programmer, is why there hasn't been more popular tools like SAS for programming. It seems that every time I turn around there's a new "hot" scripting or programming tool, which always seems to require some serious effort to learn, implement and maintain. I worked with SAS back in the mid 1980s, and it still seems leaps and bounds ahead of what some of the "modern" tools have.


SAS is not a programming language and its approach to to computing belongs in 80s. The 'scripting' languages you are referring to, represent both the present and the future when it comes to software development and by no means they can be seen as competitors to arcane approaches like SAS

DeltaLover
11-01-2014, 10:40 AM
And now the latest thing I have to deal with is integration of established software apps with MicroSoft's Power Shell, which is nothing more than adding some nice unix commands to DOS. Check.

Windows Power Shell has nothing to do with porting Unix commands to DOS (!). Instead it is a complicated and substandard framework to expose DotNet (and the underlined COM technologies) to the command line. A framework that is close to what you are describing here is https://www.cygwin.com/, but still is far from linux, since by default is loosing a lot of the flexibility of the command line as can be found in bash, ksh, tcsh or zsh.

headhawg
11-01-2014, 11:23 AM
I would vote against any flavour of Basic (especially proprietary implementations like Liberty Basic or VB) since it is not only a think of the past, but is also represents a very limited programming paradigm. I think that more declarative languages like Python or Ruby are perfect choices for the novice, since they are not only easy to start using but the also can be used for very advanced applications and have huge open source resources, fulfilling any imaginable need.Again, you're thinking more like an experienced programmer who understands the concepts. I've taught enough beginners to know that they can barely understand loops, arrays, or nested IFs let alone classes, objects, and overloaded methods. You want people to learn something that they can use in the future. I would be more interested in having them get a solid foundation in programming logic without any thought of what they might need three years from now. Once the basic understanding is there then people can graduate to a more flexible, powerful language like Python, Ruby, or C#.

For those who might be interested, coursera.org has some programming classes available. LINK (https://www.coursera.org/courses?orderby=upcoming&lngs=en&cats=cs-programming) Some courses listed are for future dates (like the Intro to Python class), and some are past classes that are still available to sign up for and learn from (like the Learn to Program: Fundamentals class).

And while I'm in favor of people learning how to program, if researching data (datamining) is the goal then I see nothing wrong with using Excel or Access to accomplish that if the limitations of those applications are known in advance. I just can't imagine a beginner trying to make a SQL db connection through Python, or BASIC, or whatever. No need to reinvent the wheel.

badcompany
11-01-2014, 12:57 PM
Don't have a dog in this fight, but, Bucky has Python as his intro class for people just getting started.

For someone like me, who took a few classes in college, including basic, and can read a flow chart, but never got past the beginner level of programming, is Python the way to get back in the game?

traynor
11-01-2014, 01:09 PM
he seems to be pushing the c program. how tough is that program ?
Actually, C is only emphasized in the beginning, to present examples of concepts (rather than teaching C as a language). Malan does the same thing (use the language to teach principles) with JavaScript and PHP later in the course.

Mehran Sahami uses the same approach in CS106a from Stanford. He uses Java to teach principles that apply to any programming language, rather than teaching Java only. Then, in CS106b (the next quarter course after Sahami's) the language used is C++. It is not to confuse students by dabbling in different languages--it is to emphasize that if one learns basic programming skills, the language is more a matter of personal choice than anything else.

traynor
11-01-2014, 01:35 PM
Don't have a dog in this fight, but, Bucky has Python as his intro class for people just getting started.

For someone like me, who took a few classes in college, including basic, and can read a flow chart, but never got past the beginner level of programming, is Python the way to get back in the game?

Python is weird. Beginners like it because it is easy to learn. Experienced programmers (who know how to avoid the shortcomings and pitfalls of dynamically typed languages that have x as an integer on one line, as a string on another, and as something completely different on yet another line). It is in the in-between areas (not still a novice, but not yet proficient) the problems arise.

Consider something really simple, like naming conventions. If I call final time (a "double" value) "dblFinalTime" and define it as a double value (with a decimal point, rather than being an integer), the app should complain if I try to consider it a string (a collection of letters and words, rather than a number). When I see that name in a line of code later, I know exactly what it is, what it should be, how it is used, and why.

That may seem trivial, and annoying, especially when all the values used have to be declared and initialized as specific "data types" (integers, characters, doubles, character strings, etc.). When your apps start growing, the value of such techniques (and the shortcomings of dynamically-typed languages like Python that let people develop habits like referring to multiple "things" using the same name, and using names like "A1" and "bacon" as variable names for numeric values) will be much more apparent.

With those caveats, Python is a fairly good choice for a "first" language. The principles are pretty much the same. Learn all about the loops and conditionals and arrays in Python, then download Visual Studio 2013 (Visual Basic) and get ready to dazzle the world with your creations. Seriously. Or bypass the Python stage, learn the basic of Visual Basic or VBA, and get straight to the dazzling part.

traynor
11-01-2014, 01:41 PM
Don't have a dog in this fight, but, Bucky has Python as his intro class for people just getting started.

For someone like me, who took a few classes in college, including basic, and can read a flow chart, but never got past the beginner level of programming, is Python the way to get back in the game?

If you have any experience at all in writing programs--even at the most basic level, or after watching Bucky for an hour or so--you might be better off going straight for Visual Basic 2013. It has a facility called Intellisense that will explain most of what you need to know on the fly as you are using it.

traynor
11-01-2014, 01:48 PM
This stuff is being taught in middle school here. To old people like me, it like trying to learning Chinese. The kids could put us oldsters out the handicapping business in a hurry, if they were interested in horse racing, which they are not. Horse racing may be last refuge for the non techie gambler. It seems to me a little tech knowledge, if put to good use(a big if), is a huge advantage.

I agree wholeheartedly. One of the most basic uses is to break out of the "everybody crunching the same old numbers in the same old way" syndrome. Even if that requires a bit of manual entry (shudder, shudder) of data to get a BIG advantage over the point-and-click crowd.

traynor
11-01-2014, 02:02 PM
Again, you're thinking more like an experienced programmer who understands the concepts. I've taught enough beginners to know that they can barely understand loops, arrays, or nested IFs let alone classes, objects, and overloaded methods. You want people to learn something that they can use in the future. I would be more interested in having them get a solid foundation in programming logic without any thought of what they might need three years from now. Once the basic understanding is there then people can graduate to a more flexible, powerful language like Python, Ruby, or C#.

For those who might be interested, coursera.org has some programming classes available. LINK (https://www.coursera.org/courses?orderby=upcoming&lngs=en&cats=cs-programming) Some courses listed are for future dates (like the Intro to Python class), and some are past classes that are still available to sign up for and learn from (like the Learn to Program: Fundamentals class).

And while I'm in favor of people learning how to program, if researching data (datamining) is the goal then I see nothing wrong with using Excel or Access to accomplish that if the limitations of those applications are known in advance. I just can't imagine a beginner trying to make a SQL db connection through Python, or BASIC, or whatever. No need to reinvent the wheel.

I have nothing bad to say about Access or Excel. A HUGE advantage of both is the ability to learn (and use) VBA, which is a subset of Visual Basic. It all translates directly--everything you learn about VBA in Access or Excel can be used in Visual Basic--with a stunning application like Visual Studio to do it in.

It is also very easy to wire a VB application to Access or Excel--to use all the data and facilities in an Access database or Excel spreadsheet--without ever seeing it onscreen. Not rocket science or a steep learning curve. No more than a couple of lines of code.

traynor
11-01-2014, 02:14 PM
Without regard for brand, I don't think EITHER a database or spreadsheet is an appropriate choice for data mining--other than as a place to store data used in another (dedicated data mining) app.

I cannot imagine why anyone would fiddle around writing hundreds of queries and macros for whatever database, "cloud" or otherwise, when they can feed the data to RapidMiner or WEKA or Anaconda3 with a couple of mouse clicks, and get back information that would take a horrendous amount of time and effort to duplicate. Access and Excel (and the open-source clones and alternatives) are nice to store stuff, or to do simplistic, one-dimensional data manipulation. Not much more.

Of course, you can always take a shortcut, learn enough basic programming to stuff the data into a text file, and go straight to the data mining with RapidMiner, WEKA, or Anaconda3, find out what works, and use it.

traynor
11-01-2014, 02:25 PM
Good post. For me when we talk about getting complete novices off the ground with programming I think back to an old book like John Smiley's Learn To Program VB6, maybe there's something more current on the order of that. VBA and VB6 have a lot of common ground between them. I started with Basic on the VIC20 and Commodore64. Being just a young kid at the time I would've benefitted a great deal from formal instruction and never got it which didn't help matters, so I can see where others are coming from. On the other hand it's a different time, I have a hunch that it may be more efficient for the aspiring computer handicapper / researcher to choose software tools first like Excel / Access and learn hands on as never before by leveraging online resources, tutorials, forums etc. I guess the big question is what do people want to do, what type of output are they looking to get out of the software.

A bigger question would be, "Do you have some ideas that you want to try out, that you think may work well, that you think may give you an advantage over the crowd?" In that case, it is worth the effort to learn enough programming to write a basic app for your own use to test your ideas.

One of the most proficient on-track handicappers I know uses a TI-94 graphing calculator, and manually enters the data for the races she is handicapping. No data downloads, no laptop or tablet app with bells and whistles, and--most importantly--none of the weird "adjustments" made by most software apps.

traynor
11-01-2014, 02:39 PM
If you're new to programming, forget about C or C++. In fact, forget about object-oriented programming altogether if you have never coded before. Try learning something like BASIC first. It's been around forever, and the syntax is pretty straightforward. Liberty Basic has a demo version and there's also FreeBasic which is...um...free. Learn to program procedurally and work your way up to OOP. (If you're really adventurous you can use Visual Studio 2013 Express to learn Visual Basic .Net, but I think that might be too much of a challenge for n00bs. Microsoft Virtual Academy has a beginner course in VB .Net -- also free. You could watch the first couple of videos and take the assessments to see if you're ready for it.)

I only watched a few minutes of each, but unless you think that you could get into Stanford or MIT those are not the best videos for beginners imo. Beginners aren't going to do any bitwise functions, so I'm not sure why someone would need to know binary at a beginner level. I don't have something that I can recommend offhand, but anyone trying to write code should learn programming logic and how to create a flowchart. You could know every command/function in a programming language but if your logic is flawed and you can't get your program from point A to point B, what's the point of knowing that you can make a call to the Windows API?

And I'm not shooting down suggestions by traynor or DL. They are much better programmers than I am. But because of that I think that they may be overestimating the average person's coding ability.


That is exactly the point of computer science--programming logic, rather than nitpicky details of one language over another. It is precisely the basic details that are needed to understand that programming logic. An example: the "garbage" content of a memory area that can be returned if a variable is not initialized. Understanding the "why" makes the "how" really simple.

Both the Harvard and Stanford courses linked are intended as intro-level classes for non-computer science majors. Most colleges require a basic course in computers for most (if not all) students in the first semester/year. Malan's CS50 class had 750 students onsite, and something like 80,000 online through EdX. For good reason.

I agree 100% about learning BASIC or VBA, and 110% that Visual Basic in the (free) Visual Studio 2013 is the way to go for a novice.

traynor
11-01-2014, 03:37 PM
Another option: Python ... on Visual Studio.

http://www.hanselman.com/blog/OneOfMicrosoftsBestKeptSecretsPythonToolsForVisual StudioPTVS.aspx

Tom
11-01-2014, 03:40 PM
I agree wholeheartedly. One of the most basic uses is to break out of the "everybody crunching the same old numbers in the same old way" syndrome. Even if that requires a bit of manual entry (shudder, shudder) of data to get a BIG advantage over the point-and-click crowd.

What new handicapping advantage is there to using a home grown program that you don't already have access to without it? How is a program going to give you an advantage, specifically? I see being able to do things faster and more accurately, but what NEW are you to uncover? You have to write the program to do something, but what is that something you don't know about now? What am I missing?

badcompany
11-01-2014, 04:20 PM
What new handicapping advantage is there to using a home grown program that you don't already have access to without it? How is a program going to give you an advantage, specifically? I see being able to do things faster and more accurately, but what NEW are you to uncover? You have to write the program to do something, but what is that something you don't know about now? What am I missing?

I'm not familiar with handicapping programs. but I do know a bit about financial market algorithms. They're basically a coded set of rules. The advantage is in the number crunching ability. They allow you to scan more markets and timeframes than you could longhand. Of course, the trick is to come up with rules that are consistently profitable.

traynor
11-01-2014, 04:27 PM
What new handicapping advantage is there to using a home grown program that you don't already have access to without it? How is a program going to give you an advantage, specifically? I see being able to do things faster and more accurately, but what NEW are you to uncover? You have to write the program to do something, but what is that something you don't know about now? What am I missing?

That is the purpose of this thread, and the purpose of learning to write basic programs--to suggest that finding that handicapping advantage is not rocket science, and well within the capability of most handicappers--computer and otherwise--to find on their own.

traynor
11-01-2014, 04:34 PM
I'm not familiar with handicapping programs. but I do know a bit about financial market algorithms. They're basically a coded set of rules. The advantage is in the number crunching ability. They allow you to scan more markets and timeframes than you could longhand. Of course, the trick is to come up with rules that are consistently profitable.

Horse racing data exists in an information silo. Download Equibase data, get exactly the same data everyone else downloads. Differences in massage techniques are basically cosmetic, and the efficient market hypotheisis kicks in big time. If you want to stay ahead, you need information that is different from that used by everyone else, or information that is manipulated/calculated/aggregated from that data in a manner different from that used by everyone else.

badcompany
11-01-2014, 05:23 PM
And while I'm in favor of people learning how to program, if researching data (datamining) is the goal then I see nothing wrong with using Excel or Access to accomplish that if the limitations of those applications are known in advance. I just can't imagine a beginner trying to make a SQL db connection through Python, or BASIC, or whatever. No need to reinvent the wheel.

While I would like to learn more programming for my own knowledge, In 2014, does someone who doesn't have a natural aptitude, really need to spend time even programming Excel or Access, when then are ways to let someone else do the grunt work?

Here's an example. If you wanted to find the best performing stock market industries for a certain time period, you can go to a yahoo or Morningstar and it's laid out for you in a spreadsheet. From there you can transfer the stocks you like to a watch list which is essentially a data base. No programming required.

http://i95.photobucket.com/albums/l142/thinlizzy21/7e88c321ebe9fff63fd83393f5edc0d0_zps812700ee.jpg


http://i95.photobucket.com/albums/l142/thinlizzy21/6da6124d5abf1e831fc05aeaafff0927_zpsc2d4a821.jpg


http://i95.photobucket.com/albums/l142/thinlizzy21/1162b0b06de45f2f785305bd055d2a71_zps9ca9d46f.jpg

HUSKER55
11-01-2014, 05:26 PM
I was talking to a couple from the math department at Hawaii Unv and their contention was that fortran was easy to learn, dealt with numbers really well and was easy to create my own objects or I could use python because it would be read by either compiler.

did I get snowed?
thanks

badcompany
11-01-2014, 05:39 PM
I was talking to a couple from the math department at Hawaii Unv and their contention was that fortran was easy to learn, dealt with numbers really well and was easy to create my own objects or I could use python because it would be read by either compiler.

did I get snowed?
thanks

This is the problem. You feel like you get pulled in different directions. That makes you not want to commit to anything because you think you're gonna invest a lot of time and effort only to find out what you learned was useless.

headhawg
11-01-2014, 06:07 PM
While I would like to learn more programming for my own knowledge, In 2014, does someone who doesn't have a natural aptitude, really need to spend time even programming Excel or Access, when then are ways to let someone else do the grunt work?Um...wasn't learning basic programming skills the whole point of this thread? If you can get info from somewhere else, do it. If you want to use someone else's software, do it. But to point out that you can get/do those things is counter to traynor's original post.

traynor
11-01-2014, 06:10 PM
I was talking to a couple from the math department at Hawaii Unv and their contention was that fortran was easy to learn, dealt with numbers really well and was easy to create my own objects or I could use python because it would be read by either compiler.

did I get snowed?
thanks

Yes.

badcompany
11-01-2014, 06:25 PM
Um...wasn't learning basic programming skills the whole point of this thread? If you can get info from somewhere else, do it. If you want to use someone else's software, do it. But to point out that you can get/do those things is counter to traynor's original post.

Traynor's premise is that programming skills can help you write a handicapping app.

However, if you are a mediocre programmer, is it wise to compete against people who are actually good at programming?

I'm basically talking about the difference between doing something as a hobby and doing it for money. If the latter, you're gonna need some talent.

traynor
11-01-2014, 06:35 PM
This is the problem. You feel like you get pulled in different directions. That makes you not want to commit to anything because you think you're gonna invest a lot of time and effort only to find out what you learned was useless.

Way back, I ordered Sartin's original Phase III app, arguably the clunkiest piece of software ever marketed. I had never written a line of code in my life. I saw an offer from George Green in PRN for his version of pace (free) and actually got that before Sartin's because the latter got lost in the mail. Green's program did the same things as Sartin's (some way better) and had a neat capability to click function keys to change the screen color and text color. I looked at the code (all of a couple of pages of plain vanilla BASIC) clearly commented with explanations of what each line did, and all neatly organized with descriptive variable names. Meaning if one could read English, one could read George's (very well written) code, and understand what it did.

My first "programming experience" was copying George's screen/text color function and typing it by hand into Sartin's app. I plugged it in right after the notation, "Programming by (whoever). Genius by Howard Sartin."

I am a very pragmatic person. My second "programming" endeavor was coding a line that allowed times in DRF format (1:10.3) to be entered as 110.3 in Sartin's app, rather than the requirement of mentally converting it to 70.6 before entering.

I got a book from the library on BASIC, and started writing my own pace app. That was a long time ago. I don't think that anything I ever learned about programming was useless.

Tom
11-01-2014, 06:43 PM
I did a lot of programming in basic. Most of it Sartin type stuff.
I did a program for the Sharp 360 Handheld that did the Total Pace stuff, using the Beyer numbers to figure out the variant. MY friend, Achilles (here) and I made a few bucks on the Inner track simulcasting at Finger Lakes.

When Synergism II came out, I loaded it up at Sartoga, and the hand held froze up! I erased it and quickly wrote a simple program that calculated APV and %Early. That was all I had to go by, other than the morning analysis by the Hat and DRF.

One of the best days I ever had there.

traynor
11-01-2014, 06:44 PM
Traynor's premise is that programming skills can help you write a handicapping app.

However, if you are a mediocre programmer, is it wise to compete against people who are actually good at programming?

I'm basically talking about the difference between doing something as a hobby and doing it for money. If the latter, you're gonna need some talent.

It depends whether you are doing it for your own use, or doing it to sell to other people. Being a good programmer doesn't mean one can pick winners any better than anyone else. All it means is that one can write a spiffy looking program with lots of color and bells and whistles that doesn't do much more than one could do by hand, except it does it faster.

Even basic programming skills enable one to easily explore ideas and concepts of handicapping that would otherwise take mountains of work.

headhawg
11-01-2014, 06:50 PM
Traynor's premise is that programming skills can help you write a handicapping app.

However, if you are a mediocre programmer, is it wise to compete against people who are actually good at programming?

I'm basically talking about the difference between doing something as a hobby and doing it for money. If the latter, you're gonna need some talent.I think the important thing is what traynor wrote in posts 35 and 36 -- can you use data in a way that gives a handicapping edge. That's really the main thing that sets handicapping programs apart. Dave's HSH program is going to have some proprietary numbers in it, just like Jeff's Jcapper program and Ken's HTR program. If I knew those "algorithms" I could code it -- and I'm not gifted. Is the average person going to be able to create something worthwhile? Probably not, but one never knows. Ninety-five plus percent of 'cappers lose money anyway mostly because they do the same thing losing things over and over, or are not willing to do the work that it takes to succeed. Perhaps by creating their own software they might have a chance to put themselves in the 5% category.

badcompany
11-01-2014, 07:10 PM
As an aside, listening to Malan's lecture, I'm having flashbacks to sitting in a classroom when the teacher is going just a bit too fast.

Gotta love being able to scrub back and listen again. :ThmbUp:

Tom
11-01-2014, 07:42 PM
Why wouldn't a good database do the trick?
You can explore lots of ideas and you can make new factors in it.
What will a program do that a DB won't?

traynor
11-01-2014, 11:21 PM
I did a lot of programming in basic. Most of it Sartin type stuff.
I did a program for the Sharp 360 Handheld that did the Total Pace stuff, using the Beyer numbers to figure out the variant. MY friend, Achilles (here) and I made a few bucks on the Inner track simulcasting at Finger Lakes.

When Synergism II came out, I loaded it up at Sartoga, and the hand held froze up! I erased it and quickly wrote a simple program that calculated APV and %Early. That was all I had to go by, other than the morning analysis by the Hat and DRF.

One of the best days I ever had there.

Not surprising. I used the Sharp 1260 (the small one with the single line display) for several years, with little more than Phase III-type figures generated. It was great!

traynor
11-01-2014, 11:30 PM
As an aside, listening to Malan's lecture, I'm having flashbacks to sitting in a classroom when the teacher is going just a bit too fast.

Gotta love being able to scrub back and listen again. :ThmbUp:

I like fast. The faster the better. Malan goes fast, but with clarity--rather than overwhelming listeners with a torrent of words that make one think he or she is "slow" when in fact the speaker is almost inarticulate, and compensates by speaking rapidly to create the impression of knowledge. Julie Zelenski (the Stanford instructor for CS106b) and Mehran Sahami (the Stanford instructor for CS106a) go at that same rate of speed. It is the slow, ponderous, pontificating type of presentation that puts me to sleep. Or causes me to dump the class and get in another, better one.

traynor
11-02-2014, 01:06 AM
Why wouldn't a good database do the trick?
You can explore lots of ideas and you can make new factors in it.
What will a program do that a DB won't?

If you are familiar with designing and executing fairly complex queries, you are satisfied with the results you get, and you have nothng specific that you want to learn more about, there is probably little reason for you to consider doing anything else. The same goes for those who are familiar with, and comfortable using, Excel spreadsheets.

HUSKER55
11-02-2014, 02:10 AM
where, (how), do you get the past performance data into a program? Maybe I should say how do I convert a pdf file from bris, or any place else, into any program.

I called Bris, DRF and Equibase and they all said any data downloads were for their programs only and that any other data was PDF only.

The lady at equibase said to contact them (via feedback) and perhaps they could make one one for a fee, but she thought the answer was no.

I am missing something here.

Will someone throw me a rope?

headhawg
11-02-2014, 08:30 AM
The easiest way is to use a data provider's comma-delimited files. You would simply have the program read the data into the program and use it from there. How to do that is dependent on the programming language, but there would be a method/procedure out there on the Interwebs to show you how to do it. Parsing a pdf file is a whole other ballgame, and if you're paying a data provider just go with the simplest file structure.

Most people will agree that HDW provides the best data, but the most popular is probably the Bris single-file format.

HUSKER55
11-02-2014, 09:07 AM
thanks everyone!

traynor
11-02-2014, 12:46 PM
It also depends on how many tracks you plan to play, or are playing. The whole "I can bet 20 tracks a day!" syndrome that seems to fuel many computer users is--in most cases--sheer folly. They dabble here and poke a little there, and believe their gee whiz bells-and-whistles computer apps are "handicapping the races" for them. If they were making buckets of money, I would think otherwise. What I think is that most computer users are doing as poorly as (or worse than) most pen-and-paper handicappers--with the aid of technology to make it seem they are doing something "high tech." There is nothing "high tech" about reading the output of someone else's handicapping app unless that app is generating a generous profit for you.

Playing multiple tracks is great--if you are winning. If not, you may get WAY much further ahead by concentrating on one track, and usng your own app to analyze those races. If you don't know how to "equalize" a six furlong pace line for an entry in a seven furlong (or even six-and-a-half furlong) race, that might be a good thing. If you understand how those spiffy "handicapping programs" manage (or at least superficially seem to manage) horses running at different distances at different tracks to be "comparable" in today's race, you may undersand why so many bettors lose (with or without the aid of computers).

The more you learn about the basics of programming, the more you will understand the shortcomings and deficiencies of the applications so many rely on to "pick their winners" for them. And the more you will be able to overcome those same shortcomings and deficiencies in your own (relatively simple to write) program(s). Not rocket science. Just getting past the "OMG! That looks so complicated!" factor is the biggest hurdle. The rest of it is pretty easy.

In an old issue of Racing Times, there was an article that presented the details of pace analysis--the nuts and bolts code needed--and the whole thing was like half a page. Writing a pace analysis app--even for a complete novice--is almost trivial. However, because it seems complicated, and because it is easy to generate various rankings and ratings based on pace, it forms the basis of many (if not most) "handicapping programs."

One thing that is missing from handicapping apps (as they currently exist) is the implementation of basic statistical processes to analyze races. I think one of the most valuable fringe benefits of learning to write your own apps (or to write VBA code for Access or Excel, if that is your preference) is to take a block of races and feed it to WEKA, or RapidMiner, or Anaconda3 and see what comes out.

All the impressive buzzwords like "machine learning" and "artificial intelligence" and "least squares fit" and "regression analysis" and all the rest take no more to use than a free download of a decent mining app, and a couple of mouse clicks. Take what you learn from the data mining apps and implement it in your own app. Rinse and repeat.

whodoyoulike
11-02-2014, 04:05 PM
It also depends on how many tracks you plan to play, or are playing. The whole "I can bet 20 tracks a day!" syndrome that seems to fuel many computer users is--in most cases--sheer folly. They dabble here and poke a little there, and believe their gee whiz bells-and-whistles computer apps are "handicapping the races" for them. If they were making buckets of money, I would think otherwise. What I think is that most computer users are doing as poorly as (or worse than) most pen-and-paper handicappers--with the aid of technology to make it seem they are doing something "high tech." There is nothing "high tech" about reading the output of someone else's handicapping app unless that app is generating a generous profit for you.

Playing multiple tracks is great--if you are winning. If not, you may get WAY much further ahead by concentrating on one track, and usng your own app to analyze those races. If you don't know how to "equalize" a six furlong pace line for an entry in a seven furlong (or even six-and-a-half furlong) race, that might be a good thing. If you understand how those spiffy "handicapping programs" manage (or at least superficially seem to manage) horses running at different distances at different tracks to be "comparable" in today's race, you may undersand why so many bettors lose (with or without the aid of computers).

The more you learn about the basics of programming, the more you will understand the shortcomings and deficiencies of the applications so many rely on to "pick their winners" for them. And the more you will be able to overcome those same shortcomings and deficiencies in your own (relatively simple to write) program(s). Not rocket science. Just getting past the "OMG! That looks so complicated!" factor is the biggest hurdle. The rest of it is pretty easy.

In an old issue of Racing Times, there was an article that presented the details of pace analysis--the nuts and bolts code needed--and the whole thing was like half a page. Writing a pace analysis app--even for a complete novice--is almost trivial. However, because it seems complicated, and because it is easy to generate various rankings and ratings based on pace, it forms the basis of many (if not most) "handicapping programs."

One thing that is missing from handicapping apps (as they currently exist) is the implementation of basic statistical processes to analyze races. I think one of the most valuable fringe benefits of learning to write your own apps (or to write VBA code for Access or Excel, if that is your preference) is to take a block of races and feed it to WEKA, or RapidMiner, or Anaconda3 and see what comes out...

If it becomes so easy, can you provide an example of a Tbred race before it runs?

whodoyoulike
11-02-2014, 04:42 PM
I'm not familiar with handicapping programs. but I do know a bit about financial market algorithms. They're basically a coded set of rules. The advantage is in the number crunching ability. They allow you to scan more markets and timeframes than you could longhand. Of course, the trick is to come up with rules that are consistently profitable.

Are you equating programming with running a Query versus programming to help in your analyses? Because, I think there is a big difference.

badcompany
11-02-2014, 04:58 PM
Are you equating programming with running a Query versus programming to help in your analyses? Because, I think there is a big difference.

If I understand the question, correctly, there are programs for both fundamental and technical analysis.

The former will look for various financial ratios, P/E, EPS etc; the latter, various price signals.

traynor
11-02-2014, 05:43 PM
If it becomes so easy, can you provide an example of a Tbred race before it runs?

The whole point is to learn to do it yourself.

HUSKER55
11-03-2014, 04:15 AM
I have been searching opinions on the net and there are a lot of different programs out there. All geared to do one thing well, some do a lot of things reasonably well and etc.

I have come to the conclusion that anyone can do what they want on their terms, [comfort level]. We all learned to walk before we ran.

It boils down to chose your weapon and make your stand on your own terms.

One huge advantage is that the search for the right program for yourself sure does organize your awareness of what you are doing, what you want to do and what you want a program to do.

Regardless of your skill level there is a program for you. Confidence in one's numbers is a huge part of wagering.....well at least for me.

traynor
11-03-2014, 09:24 AM
I have been searching opinions on the net and there are a lot of different programs out there. All geared to do one thing well, some do a lot of things reasonably well and etc.

I have come to the conclusion that anyone can do what they want on their terms, [comfort level]. We all learned to walk before we ran.

It boils down to chose your weapon and make your stand on your own terms.

One huge advantage is that the search for the right program for yourself sure does organize your awareness of what you are doing, what you want to do and what you want a program to do.

Regardless of your skill level there is a program for you. Confidence in one's numbers is a huge part of wagering.....well at least for me.

I agree wholeheartedly. The most basic component in the process of choosing a program is the simplest--is it intended to generate a profit, or is it intended to pass the time for hobbyists with the possibility--at some tracks on some days--of occasionally breaking even, showing a slight profit, or (more likely) reducing losses by formalizing the decision making process? That area was explored at length in another thread on software learning curves.

All of that comes down to one, single point. If your primary goal is to make a profit, you have to do it yourself. No one is going to hand you an application that generates consistent profit, because if it worked, they could make far more using it than selling it--all creative "explanations" of the motivation to sell it aside.

My premise is that the best thng for the racing industry is winners. Not even "whale grade winners." Just winners. I think that the 98% losing bettors would be happy to end each month a few hundred ahead, ecstatic to end each month a few thousand ahead, and off the scale to end each month with a profit "equivalent to a professional-level income." It is for that group that the suggestion to learn to write their own software is made.

The disappointment of expecting a hobby-grade software program to generate a profitable return can be substantial. And costly.

ubercapper
11-03-2014, 10:05 AM
where, (how), do you get the past performance data into a program? Maybe I should say how do I convert a pdf file from bris, or any place else, into any program.

I called Bris, DRF and Equibase and they all said any data downloads were for their programs only and that any other data was PDF only.

The lady at equibase said to contact them (via feedback) and perhaps they could make one one for a fee, but she thought the answer was no.

I am missing something here.

Will someone throw me a rope?

You got bad information regarding data being PDF only. I will speak to the Customer Service team. Send me an email estarr@equibase.com and I'll provide links, contact info for getting data in machine readable format.

HUSKER55
11-03-2014, 11:38 AM
THANKS!

DeltaLover
11-03-2014, 11:52 AM
Developing software and handicapping horses are two completely distinct things!

If you really want to learn how to program, my advice to you will be to not try to immediately apply it to handicapping and forget about getting any immediate benefit from it.

Programming is an extremely sophisticated craft, which requires years of dedicated study and professional exposure to be mastered. If you do not have the dedication, time and money to spend and (some) talent, my advice to you will be to just stay clear. If you really are serious about it, your best bet might be to attend college getting a CS degree (of course programming and CS are not exactly the same but it still is as close they get).. Hint: If you find the MIT course I posted above, difficult to follow, you probably need to forget about it and try something different...

traynor
11-03-2014, 02:46 PM
Developing software and handicapping horses are two completely distinct things!

If you really want to learn how to program, my advice to you will be to not try to immediately apply it to handicapping and forget about getting any immediate benefit from it.

Programming is an extremely sophisticated craft, which requires years of dedicated study and professional exposure to be mastered. If you do not have the dedication, time and money to spend and (some) talent, my advice to you will be to just stay clear. If you really are serious about it, your best bet might be to attend college getting a CS degree (of course programming and CS are not exactly the same but it still is as close they get).. Hint: If you find the MIT course I posted above, difficult to follow, you probably need to forget about it and try something different...


Programming is nothing more than creating a set of instructions for a machine to execute. It is--in its essence--no more complex, and no more difficult, than creating any other set of instructions.

The MIT course posted is not overly complex--just boring, ponderous, pompous, and dull. Anyone who believes that watching someone repeat some jingoist phrase--then write it on a blackboard and stand silently and patiently as if waiting for applause--is education needs to get out in the real world more.

Of course, that is just my own personal opinion. I have no patience whatsoever for dry, boring lectures that contain little or no real instruction. I will take a Malan or Sahami or Zelenski any day in preference to those who seem to be saying, "I suffered and bled for my little dripple of knowledge, and I want to be sure you suffer and bleed a sufficient amount as well." That isn't teaching. That is self-aggrandizement.

Watch the 11th lecture in the series:
https://www.youtube.com/watch?v=DkPsD58nUIE

It is a real gem.

DeltaLover
11-03-2014, 03:05 PM
Programming is nothing more than creating a set of instructions for a machine to execute. It is--in its essence--no more complex, and no more difficult, than creating any other set of instructions.


I do not agree.. What you describe here is more suitable to what is known as the compilation face.. Modern programming is not about creating set of instructions but about creating higher level abstractions and aggregates with no necessary link to the ultimate machine level constructs...

HUSKER55
11-03-2014, 06:34 PM
UBERCAPPER,

your link came back undeliverable.

will you put up another one?

thanks

traynor
11-03-2014, 11:00 PM
I do not agree.. What you describe here is more suitable to what is known as the compilation face.. Modern programming is not about creating set of instructions but about creating higher level abstractions and aggregates with no necessary link to the ultimate machine level constructs...

In most cases, in most organizations and enterprises, that is not the work of programmers. Programmers do what they are told to do, in the way they are told to do it. Executives decide what they want. Business analysts and systems analysts create requirements. The programmers put their heads down and write the code they are instructed to write, in the way they are instructed to write it.

We are not discussing architecture. Just programming. The simple, uncluttered, uncomplicated, concrete task of writing sets of basic instructions to enable useful output. No abstractions needed.

traynor
11-04-2014, 09:05 AM
It is often the case that doing things the same old way as everyone else is doing them is not especially productive. "Learning to program"--when viewed as some incredibly complex thing that requires immense effort to do (much as some seem to view handicapping horse races) is offputting. It should not be.

Programming--provided one truly understands what one is doing sufficiently to transmit that knowledge to another in an effective fashion--is relatively simple. Like handicapping horse races, it can grow more complex as one's knowledge and experience grows. Fortunately--unlike the opinions of some that decades of losing are mandatory before one can aspire to a goal as lofty as making a profit--there are competent instructors able to convey the basics of programming simply and elegantly.

www.buckysroom.org (http://www.buckysroom.org) is one option. An even better option is:
http://www.fresherqueries.com/. If you don't recognize the names infosys and wipro, you are probably not in the IT field. Infosys has some of the best technical communicators available, and their training materials are designed to convey complex information in simple, understandable terms. The way technical instruction should be conveyed. Links to training materials are on the left of the main infosys page.

Alternate links:
http://www.fresherqueries.com/2014/08/infosys-training-video-tutorials.html

http://www.fresherqueries.com/search/label/Study%20Materials

badcompany
11-04-2014, 09:27 AM
Of course, that is just my own personal opinion. I have no patience whatsoever for dry, boring lectures that contain little or no real instruction. I will take a Malan or Sahami or Zelenski any day in preference to those who seem to be saying, "I suffered and bled for my little dripple of knowledge, and I want to be sure you suffer and bleed a sufficient amount as well." That isn't teaching. That is self-aggrandizement.

Watch the 11th lecture in the series:
https://www.youtube.com/watch?v=DkPsD58nUIE

It is a real gem.

Having sampled both Malan and the George Costanza looking guy from MIT, I'd take Malan in a heartbeat.

DeltaLover
11-04-2014, 09:53 AM
Talking from my experience in putting together several development shops, I can assure you that even with very high standards of initial resume scanning and phone screenings, the vast majority of the programmers I have interviewed, came up light in skills, talent and knowledge.


More than this, if developing software was not such an extremely difficult process, this would had been directly reflected on the related pay rates, that are way more than the average, given the same level of typical skills, like educational level and years of experience.


As I said before, becoming an accomplished programmer, requires years of formal eduction, eternal reading and experimenting with new technologies, tons of real world professional experience and more than anything else talent.

An interesting related article from the top Computer Scientist and AI guru Peter Norvig can be found here:

Teach Yourself Programming in Ten Years

http://norvig.com/21-days.html

Robert Goren
11-04-2014, 09:54 AM
The main reason to learn to write code is that you don't deal with code monkeys. :)

traynor
11-04-2014, 12:03 PM
The main reason to learn to write code is that you don't deal with code monkeys. :)

For the purposes of writing one's own app to do whatever one considers important or relevant in handicapping horse races, a couple of hours spent watching infosys intro programming presentations and Bucky's videos (typically 6-7 minutes long) will provide all one needs to get started.

A degree in rocket science is not needed, and in many cases could be a hindrance to insights that most without such degrees already have. We are talking about horse racing, not the orbital decay of space junk.

A weekend should be enough to get one up and coding. Especially if they take the time to download Visual Studio (with Visual Basic) and top it off with a few Microsoft tutorials.

highnote
11-04-2014, 01:31 PM
One of Dick Mitchell's early books had a bunch of basic language code in the back of the book. I found these very helpful in learning how to write code for horse racing -- especially when I wrote code for Brohammer's Modern Pace Handicapping.

If I can find some of my old code I will upload it so you can see it.

traynor
11-04-2014, 02:29 PM
One of Dick Mitchell's early books had a bunch of basic language code in the back of the book. I found these very helpful in learning how to write code for horse racing -- especially when I wrote code for Brohammer's Modern Pace Handicapping.

If I can find some of my old code I will upload it so you can see it.

Thanks! That is a great idea! BASIC (if "meaningful variable names" are/were used) is an excellent way to learn to program. I may have some in a backup file from the old days somewhere. If I do, I will post it.

DeltaLover
11-04-2014, 02:37 PM
Thanks! That is a great idea! BASIC (if "meaningful variable names" are/were used) is an excellent way to learn to program. I may have some in a backup file from the old days somewhere. If I do, I will post it.

With the risk of sounding spirit of contradiction, I have to refer to the following quote of Edsger Dijkstra:


It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.

badcompany
11-04-2014, 06:25 PM
http://www.fresherqueries.com/. If you don't recognize the names infosys and wipro, you are probably not in the IT field. Infosys has some of the best technical communicators available, and their training materials are designed to convey complex information in simple, understandable terms. The way technical instruction should be conveyed. Links to training materials are on the left of the main infosys page.

Alternate links:
http://www.fresherqueries.com/2014/08/infosys-training-video-tutorials.html

http://www.fresherqueries.com/search/label/Study%20Materials

This is some really good stuff. I like how it's broken into bite size pieces. You can watch one whenever you have some time to kill.

traynor
11-04-2014, 07:03 PM
With the risk of sounding spirit of contradiction, I have to refer to the following quote of Edsger Dijkstra:

Differences of opinion are what make a horse race. "Expert" commentary on pretty much any point can be located, if one is interested enough to search.

traynor
11-04-2014, 07:19 PM
This is some really good stuff. I like how it's broken into bite size pieces. You can watch one whenever you have some time to kill.

The part where it gets really interesting in when you get to the more "advanced" tutorials by others, and think, "Oh, yeah. That's really simple. That is just (whatever)." Because you were presented the basic concepts in basic fashion--without the useless window dressing of complexity some feel is necessary to inflate their (self-perceived) "position" in life. College professors--for some unknown reason--seem to relish making simple things seem incredibly obscure and complex.

It is not so much that technical material is complex as it is that there are substantial shortcomings and deficiencies in how it is taught.

One of the better academic teaching projects (by a consortium of universities, as a response to the horrendous dropout rate in computer science classes--caused by too many talking heads and too few David Malans and Mehran Sahamis) is:
http://www.bluej.org/

traynor
11-04-2014, 08:05 PM
"BASIC (a backronym for Beginner's All-purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages whose design philosophy emphasizes ease of use.

In 1964, John G. Kemeny and Thomas E. Kurtz designed the original BASIC language at Dartmouth College in New Hampshire. They wanted to enable students in fields other than science and mathematics to use computers. At the time, nearly all use of computers required writing custom software, which was something only scientists and mathematicians tended to learn.

Versions of BASIC became widespread on microcomputers in the mid-1970s and 1980s. Microcomputers usually shipped with BASIC, often in the machine's firmware. Having an easy-to-learn language on these early personal computers allowed small business owners, professionals, hobbyists, and consultants to develop custom software on computers they could afford.

BASIC remains popular in many dialects and in new languages influenced by BASIC, such as Microsoft's Visual Basic. In 2006, 59% of developers for the .NET Framework used Visual Basic .NET as their only programming language."

http://en.wikipedia.org/wiki/BASIC

...

"BASIC's fortunes reversed once again with the introduction in 1991 of Visual Basic ("VB"), by Microsoft. This was an evolutionary development of QuickBasic, and included constructs from other languages such as block structured control statements including With and For Each, parameterized subroutines, optional static typing, and more recentlyTemplate:2001 a full object oriented language. But the language retains considerable links to its past, such as the Dim statement for declarations, Gosub/Return statements, and even line numbers which are still needed to report errors properly.

An important driver for the development of Visual Basic was as the new macro language for Excel.

Ironically, given the origin of BASIC as a "beginner's" language, and apparently even to the surprise of many at Microsoft who still initially marketed it as a language for hobbyists, the language had come into widespread use for small custom business applications shortly after the release of VB version 3.0, which is widely considered the first relatively stable version. While many advanced programmers still scoffed at its use, VB met the needs of small businesses efficiently wherever processing speed was less of a concern than ease of development.

By that time, computers running Windows 3.1 had become fast enough that many business-related processes could be completed "in the blink of an eye" even using a "slow" language, as long as large amounts of data were not involved. Many small business owners found they could create their own small, yet useful applications in a few evenings to meet their own specialized needs. Eventually, during the lengthy lifetime of VB3, knowledge of Visual Basic had become a marketable job skill.

Microsoft also produced VBScript in 1996 and Visual Basic .NET in 2001. The latter has essentially the same power as C# and Java but with syntax that reflects the original Basic language."

traynor
11-04-2014, 08:16 PM
I think learning a bit about programming (and downloading the free Visual Basic Express Edition from Microsoft) could give an entire new dimension to the capabilities of the average bettor.

Take special note of that Wikipedia line:
"Many small business owners found they could create their own small, yet useful applications in a few evenings to meet their own specialized needs."

No rocket science or lofty abstractions needed. Just tell me who is going to win the seventh at Aqueduct.

MJC922
11-04-2014, 08:16 PM
With the risk of sounding spirit of contradiction, I have to refer to the following quote of Edsger Dijkstra:

Just as there are beer snobs, apparently there are code snobs. I promise you this, someone like Francesco Balena can do more with two lines of VB than this guy will do with 20 lines of anything else.

DeltaLover
11-04-2014, 11:16 PM
I think learning a bit about programming (and downloading the free Visual Basic Express Edition from Microsoft) could give an entire new dimension to the capabilities of the average bettor.

Take special note of that Wikipedia line:
"Many small business owners found they could create their own small, yet useful applications in a few evenings to meet their own specialized needs."

No rocket science or lofty abstractions needed. Just tell me who is going to win the seventh at Aqueduct.

Disclaimer

Let's make it clear, that here we are not having neither a Holly war nor any other kind of a fight... We are just expressing our opinions and experiences, so they might be helpful to someone.

I will have to completely disagree about the simplicity of VB development. The bulk of current VB.NET development is very complicated and has a steep learning curve. It is not about the language itself, but the gigantic and extremely ackward ecosystem that comes with. When you talk about VB.NET today, you probably refer to MVVC, Microsoft Prism Library and silverlight which is far from simple or intuitive. More than this the related commercial components (like Telerik, ComponentOne or DevExpress)are not only expensive, but also require a great deal of expertise to fit then within the rest of the MVVC and prism framework.
As a language, I would agree that VB.net is very close to C# and has been extended tremendously to support almost the same functionality as C# (or any other .net language). Still, I find it extremely ugly and verbose and I really do not enjoy writing code in it. There is no doubt, that you write useful application in VB.net, I still do not think it is neither the easier nor the most flexible language; there is a long array of other languages that you can write better and easier code and without having to pay anything to M$...

Some of the things I find restrictive about vb.net are the following:

Talking about VB.net, I find its syntax extremely verbose and awkward, take for example the Overloads (!!) keyword, by the way since I referred to overloading is it even possible to overload the assignment operator in VB.net?

One of the things I like in C# is the dynamic keyword, which I have used for some interesting cross language communication components, can you tell me how you can do the same in VB.net?

How easy it is to port VB.net code to any other operating system?

I like extension methods as they are implemented in VB.net, but can you really add a brand new property or field to an existing class? Why not? Even more than this, can you override an existing method?

Do you find the syntax of LINQ intuitive and can you write LINQ code without resharper?

Tom
11-05-2014, 08:11 AM
How to program and what to program are two separate discussions.
Once you are ready to write, what do you write?
What questions do you ask?

I can see writing to do grunt work, like calculating speed and pace figs from times, class ratings from earnings, whatever, but what do you write to learn something new?

DJofSD
11-05-2014, 08:56 AM
How to program and what to program are two separate discussions.
Once you are ready to write, what do you write?
What questions do you ask?

I can see writing to do grunt work, like calculating speed and pace figs from times, class ratings from earnings, whatever, but what do you write to learn something new?
Programming is both an art and a science.

And, Tom, that is a very good insight you have about asking the right questions. I suspect you have been or are a project manager or a manager of some kind. Nose to the grindstone grunts never take a step back to consider the larger picture and to ponder such things. Very good!

traynor
11-05-2014, 11:21 AM
Disclaimer

Let's make it clear, that here we are not having neither a Holly war nor any other kind of a fight... We are just expressing our opinions and experiences, so they might be helpful to someone.

I will have to completely disagree about the simplicity of VB development. The bulk of current VB.NET development is very complicated and has a steep learning curve. It is not about the language itself, but the gigantic and extremely ackward ecosystem that comes with. When you talk about VB.NET today, you probably refer to MVVC, Microsoft Prism Library and silverlight which is far from simple or intuitive. More than this the related commercial components (like Telerik, ComponentOne or DevExpress)are not only expensive, but also require a great deal of expertise to fit then within the rest of the MVVC and prism framework.
As a language, I would agree that VB.net is very close to C# and has been extended tremendously to support almost the same functionality as C# (or any other .net language). Still, I find it extremely ugly and verbose and I really do not enjoy writing code in it. There is no doubt, that you write useful application in VB.net, I still do not think it is neither the easier nor the most flexible language; there is a long array of other languages that you can write better and easier code and without having to pay anything to M$...

Some of the things I find restrictive about vb.net are the following:

Talking about VB.net, I find its syntax extremely verbose and awkward, take for example the Overloads (!!) keyword, by the way since I referred to overloading is it even possible to overload the assignment operator in VB.net?

One of the things I like in C# is the dynamic keyword, which I have used for some interesting cross language communication components, can you tell me how you can do the same in VB.net?

How easy it is to port VB.net code to any other operating system?

I like extension methods as they are implemented in VB.net, but can you really add a brand new property or field to an existing class? Why not? Even more than this, can you override an existing method?

Do you find the syntax of LINQ intuitive and can you write LINQ code without resharper?

I don't understand what details like porting to other operating systems or cross language communication components have to do with a handicapper writing his or her own software for her or his own use. Why do you think this type of issue would be important to a handicapper?

DJofSD
11-05-2014, 11:34 AM
I used to use VB for DOS back in the day -- that will date things.

The one knock I recall seeing quiet a bit is VB, in any flavor, was never truly capable of doing true OOP.

If that is still true then I would say by all means use something else.

As far as porting apps, with the seemingly rapid expansion of cross platform development tools, that necessity will begin to lessen.

traynor
11-05-2014, 11:42 AM
How to program and what to program are two separate discussions.
Once you are ready to write, what do you write?
What questions do you ask?

I can see writing to do grunt work, like calculating speed and pace figs from times, class ratings from earnings, whatever, but what do you write to learn something new?

I think many experienced handicappers have questions that cannot be answered by available software. I think they may also be reluctant to publicly express those questions, on the assumption that others will scoop up the ideas and either kill the prospects by dumping (much) more money into the mutuel pools or selling the ideas as part of their software offerings. The rewards of the creator of Post-It Notes is a classic example.

DeltaLover's open-source data analysis project is an example of a well-intentioned project that may be languishing because those with ideas they want to explore are reluctant to toss them on the table for everyone else to rummage through.

The solution (for the individual handicapper with the idea(s)) that enables both exploration of the ideas and capitalizing on the output is to learn a few basic programming skills. As I have mentioned before, freely available data mining apps like WEKA, RapidMiner, and Anaconda3 can turn the ideas into useful algorithms that can then be implemented in one's own application.

However, all that assumes there are ideas and questions existing. If there are no ideas, and no questions, no answers are needed.

DeltaLover
11-05-2014, 11:44 AM
I don't understand what details like porting to other operating systems or cross language communication components have to do with a handicapper writing his or her own software for her or his own use. Why do you think this type of issue would be important to a handicapper?

I do not see our conversation about Programming Languages to be limited to a handicapper writing his software; i think that we should view this topic in general, without having a specific business domain in mind, discussing the pros and cons of each approach.

Platform neutrality (among the other things that I mentioning above and many others that I did not) is certainly one of the most important aspects of successful software, as they affect evolution, interoperability and ultimately the life span of a specific project. This is important to the "handicapper" (as any other developer and computer use), for reasons like: reducing or eliminating third party software cost, migrating to another OS as the platform of choice, adopting a technology that is not available (or is difficult to use) on the current platform. Any way you are going to view it, following open standards and achieving platform neutrality is preferable to been limited to specific vendors and this is exactly the direction where the whole industry is heading to. Today’s development is based on standards like HTML5, CSS3 and javascript as opposed to the good old 90's when fat clients were the norm (see VB6, Powerbuilder, VC++, Access etc)...

DeltaLover
11-05-2014, 11:47 AM
As I have mentioned before, freely available data mining apps like WEKA, RapidMiner, and Anaconda3 can turn the ideas into useful algorithms that can then be implemented in one's own application.


I think this is excellent advice :ThmbUp:

traynor
11-05-2014, 11:59 AM
I do not see our conversation about Programming Languages to be limited to a handicapper writing his software; i think that we should view this topic in general, without having a specific business domain in mind, discussing the pros and cons of each approach.

Platform neutrality (among the other things that I mentioning above and many others that I did not) is certainly one of the most important aspects of successful software, as they affect evolution, interoperability and ultimately the life span of a specific project. This is important to the "handicapper" (as any other developer and computer use), for reasons like: reducing or eliminating third party software cost, migrating to another OS as the platform of choice, adopting a technology that is not available (or is difficult to use) on the current platform. Any way you are going to view it, following open standards and achieving platform neutrality is preferable to been limited to specific vendors and this is exactly the direction where the whole industry is heading to. Today’s development is based on standards like HTML5, CSS3 and javascript as opposed to the good old 90's when fat clients were the norm (see VB6, Powerbuilder, VC++, Access etc)...

Java, Java, and Java as the top three finishers. The only exception would be for apps that run 24/7, in which case the overhead of C++ explicit memory management is useful.

I admit a bias toward Oracle. Primarily because I react badly to the term "optimistic concurrency."

Python is a quick and easy first language for those with lots of time (for computing) and interested in implementation in areas other than computing (such as DNA mapping, bioinformatics, and such). For other uses, scripting languages take a big performance hit.

As for the future, I think the emphasis on cloud computing and mobile computing is limited. Microsoft's current path is going to go about as well as Ford's aluminum trucks. Again, that is a personal bias. I came from the fiberoptic side of the fence, where the notion of tossing a signal into the air is cause for alarm.

DeltaLover
11-05-2014, 12:08 PM
Java, Java, and Java as the top three finishers. The only exception would be for apps that run 24/7, in which case the overhead of C++ explicit memory management is useful.

I admit a bias toward Oracle. Primarily because I react badly to the term "optimistic concurrency."

Python is a quick and easy first language for those with lots of time (for computing) and interested in implementation in areas other than computing (such as DNA mapping, bioinformatics, and such). For other uses, scripting languages take a big performance hit.

As for the future, I think the emphasis on cloud computing and mobile computing is limited. Microsoft's current path is going to go about as well as Ford's aluminum trucks. Again, that is a personal bias. I came from the fiberoptic side of the fence, where the notion of tossing a signal into the air is cause for alarm.

Java belongs in the same camp of C# and VB.net. Of course it has a huge user base but this does not make it attractive to me. I prefer working with dynamic and functional languages, since I find it easier to express algorithms and business logic... Clojure is great though...

traynor
11-05-2014, 12:26 PM
Java belongs in the same camp of C# and VB.net. Of course it has a huge user base but this does not make it attractive to me. I prefer working with dynamic and functional languages, since I find it easier to express algorithms and business logic... Clojure is great though...

Clojure is nice. So is Erlang. It depends what kind of programming (or development) one is doing.

DeltaLover
11-05-2014, 12:40 PM
Clojure is nice. So is Erlang. It depends what kind of programming (or development) one is doing.

Still their user bases are not so large. The great thing about python, ruby and perl is that they have HUGE open source libraries, implementing any kind of solution you can think of and this is one of the most important reasons to use any of them..

traynor
11-05-2014, 12:53 PM
An example of why programming langugages and platforms should be a business decision (rather than an IT decision) is the experience of Inkos. Project to implement SAP's ERP (enterprise resource planning) system. They were $25 million in when someone realized that none of their IT staff could handle it once up and running, and that it would require an endless amount of outside contractors (at $300/hr) to keep running. They dumped it, and swallowed the $25 million hit.

Trends in programming come and go. Business continues. The current emphasis on HTML, JavaScript, CSS and so on is all well and good. It was not too long ago that Microsoft expected the whole world to use XML and subscribe to Microsoft products, and IBM put its efforts into promoting Linux everywhere. (Anyone remember those tacky commercials of the little kid, supposedly representing Linux taking over the world of computing?)

Trends should not be automatically equated with value. Personal preferences should not be confused with good business decisions.

traynor
11-05-2014, 12:59 PM
Still their user bases are not so large. The great thing about python, ruby and perl is that they have HUGE open source libraries, implementing any kind of solution you can think of and this is one of the most important reasons to use any of them..

Are you saying that Java lacks libraries?

traynor
11-05-2014, 01:05 PM
Still their user bases are not so large. The great thing about python, ruby and perl is that they have HUGE open source libraries, implementing any kind of solution you can think of and this is one of the most important reasons to use any of them..

"Java belongs in the same camp of C# and VB.net. Of course it has a huge user base but this does not make it attractive to me."

DeltaLover
11-05-2014, 01:06 PM
I do think that selecting a programming language or a platform is a business decision. The final word when making this kind of calls belongs to the technical team and not to the higher managerial levels... Of course a start up is always going to be favour open source technologies (due to the associated cost) while large financial institutions, will lean towards proprietary platforms like .net and oracle..

As far as MS committing to XML, again it missed the train, as their managers were very slow to realize that SOAP and WSDL were inferior to REST and kept on pushing the wrong directions, an approach that resulted to the alienation of a large number of M$ based developers, who moved to other more modern platforms...

IBM, is still pushing linux, although when it comes to OS, apple mac is clearly the dominant and most vibrant force for the moment (at least among developers and computer professionals)....

An example of why programming langugages and platforms should be a business decision (rather than an IT decision) is the experience of Inkos. Project to implement SAP's ERP (enterprise resource planning) system. They were $25 million in when someone realized that none of their IT staff could handle it once up and running, and that it would require an endless amount of outside contractors (at $300/hr) to keep running. They dumped it, and swallowed the $25 million hit.

Trends in programming come and go. Business continues. The current emphasis on HTML, JavaScript, CSS and so on is all well and good. It was not too long ago that Microsoft expected the whole world to use XML and subscribe to Microsoft products, and IBM put its efforts into promoting Linux everywhere. (Anyone remember those tacky commercials of the little kid, supposedly representing Linux taking over the world of computing?)

Trends should not be automatically equated with value. Personal preferences should not be confused with good business decisions.

DeltaLover
11-05-2014, 01:08 PM
"Java belongs in the same camp of C# and VB.net. Of course it has a huge user base but this does not make it attractive to me."

The difference is that Java users are coming from the enterprise which traditionally is all closed and proprietary source while python, ruby etc have a completely different culture and huge OS repos. I see java as the COBOL of the 21st century and as such I try to stay clear.

traynor
11-05-2014, 05:26 PM
The difference is that Java users are coming from the enterprise which traditionally is all closed and proprietary source while python, ruby etc have a completely different culture and huge OS repos. I see java as the COBOL of the 21st century and as such I try to stay clear.

Just so. If one develops for paying customers, the best choices are Java, Java, and Java, in that order. If one is developing in one's spare time and intends to donate the results of that development to the world at large, for free, then Python, Ruby, etc. are good choices. It is not that I "like" Java or that I "prefer" Java. I can do anything that can be done in Java faster and better in VB--especially anything that involves GUis. Java pays better, and will continue to pay better for as long as I am interested in caring about it.

I have heard all the open-source, trend-of-the-future arguments before, especially from the 'nix geeks in various university classes--all of whom were firmly convinced that Python and PHP would take over the world. They did--if one considers "the world" to be kitchen table programmers and one-man "software development contractors." There are exceptions, of course, but I think anyone who avoids Microsoft technologies or Java technologies on philosophical grounds is skating on very thin ice. Philosophy is all well and good, but Microsoft and Java are where the money is. And where it will be.

traynor
11-05-2014, 06:53 PM
I stand corrected. Python has taken a BIG jump recently.



Language Gartner 2014 Programming Language Index Rating

Java 1
JavaScript 2
Python 3
C 4
PHP 5
C++ 6
Ruby 7
C# 8
http://blogs.gartner.com/mark_driver/2014/10/02/gartner-programming-language-index-for-2014/

MJC922
11-05-2014, 08:10 PM
When the goal is handicapping research and related data processing for personal use it's hard for me to understand the desire for anyone to concern themselves with .NET, Java, OOP. No matter what language you choose what we're all dealing with is a delimited file originating from Equibase, we bring it into something like a db or a spreadsheet, work with it by calling subroutines and generate some output that is hopefully more value-added than what was delivered. None of this necessarily needs forms, controls, UI etc and should be heavily automated IMO. It's far from commercial software development.

If you choose VBA you surely don't even need to download visual studio, just open up Access or Excel and press Alt+F11. Insert Module> Insert Procedure and you're on your way to building user-defined functions and automating tasks with subroutines.

traynor
11-06-2014, 09:28 AM
When the goal is handicapping research and related data processing for personal use it's hard for me to understand the desire for anyone to concern themselves with .NET, Java, OOP. No matter what language you choose what we're all dealing with is a delimited file originating from Equibase, we bring it into something like a db or a spreadsheet, work with it by calling subroutines and generate some output that is hopefully more value-added than what was delivered. None of this necessarily needs forms, controls, UI etc and should be heavily automated IMO. It's far from commercial software development.

If you choose VBA you surely don't even need to download visual studio, just open up Access or Excel and press Alt+F11. Insert Module> Insert Procedure and you're on your way to building user-defined functions and automating tasks with subroutines.

If one has no questions, there is no need for seeking answers. If one is happy with the results one is getting, and results one has gotten, there is no need to change.

It is hard for me to understand why anyone would bother fiddling around with Access, Excel, or a computer handicapping app unless he or she was making a consistent profit by so doing. If not, it is little more than a boring substitute for video games.

If one has the skill to apply data mining strategies (beyond the simplistic, one-dimensional queries that most Access and Excel users believe are "mining the data") Access and Excel can be useful. I cannot understand why Access and Excel users do not take advantage of apps like RapidMiner. WEKA, or Anaconda3 to mine their data, rather than piddling around writing simplistic queries. Unless it is fear that their "results" will not hold up in the real world.

DJofSD
11-06-2014, 09:53 AM
traynor, be happy they don't explore and exploit those tools. It means you have an edge.

DeltaLover
11-06-2014, 10:17 AM
There are exceptions, of course, but I think anyone who avoids Microsoft technologies or Java technologies on philosophical grounds is skating on very thin ice. Philosophy is all well and good, but Microsoft and Java are where the money is. And where it will be.

By no means we do not avoid M$ or Java based on philosophical grounds but for very pragmatic and practical reasons. As I said before, yes, M$ and Java still have a large chunk of the market, but this is changing very fast. They are mainly used in large financial companies, who happen to have a huge investment on them (both in legacy code and employee knowledge capital), but even in this sector things are moving quickly, as I know at least two top 5 institutional banks that are currently using python as their main development platform).. when it comes to start-ups and web apps, M$ and java are far behind the curve: https://wiki.python.org/moin/OrganizationsUsingPython

Even from a strict "money" view (which is not always the first consideration for a developer to accept an offer), both M$ and Java are behind languages like python or C++... Usually the quality of a python, haskell or even C++ developer is better than its java or C# counterpart and this is directly reflected not only in the results of the work but in the paycheck as well...

traynor
11-06-2014, 11:53 AM
By no means we do not avoid M$ or Java based on philosophical grounds but for very pragmatic and practical reasons. As I said before, yes, M$ and Java still have a large chunk of the market, but this is changing very fast. They are mainly used in large financial companies, who happen to have a huge investment on them (both in legacy code and employee knowledge capital), but even in this sector things are moving quickly, as I know at least two top 5 institutional banks that are currently using python as their main development platform).. when it comes to start-ups and web apps, M$ and java are far behind the curve: https://wiki.python.org/moin/OrganizationsUsingPython

Even from a strict "money" view (which is not always the first consideration for a developer to accept an offer), both M$ and Java are behind languages like python or C++... Usually the quality of a python, haskell or even C++ developer is better than its java or C# counterpart and this is directly reflected not only in the results of the work but in the paycheck as well...

I'm sure you are aware that a major complaint a few years back (when Visual Studio was available only in paid versions) was that Microsoft technology developers were too pricey. Microsoft's solution was VS Express. In short order the market was flooded with fairly competent "entry level" Microsoft programmers. Prices dropped, businesses were happy. Same thing happened with the MCSE certification. Cisco got same complaint. The response was to flood the market with CCNAs by providing the materials for colleges (and even some high schools) to teach Cisco technologies. The value of CCNA certification dropped like a rock. The other side of the coin--of course--is SAP.

What exists today is guaranteed to change. HOW it will change, and in what direction, is a bit less certain. Even less certain is how long that change will persist. If Python is profitable, Infosys and Wipro will jump on it with both feet. Google aside, the current "trend" toward Python may be more failure of software developers to compete in the Java/C++ development arena than any real advantage to Python. Specifically, developers are leaning on Python because of losing marketshare of the Java/C++ field to Infosys, Wipro, and others.

I have nothing against Python. Frankly, I have never found anything to make me prefer it over Java or VB. I have no problem with data typing, and most of what are considered "advantages" of Python, I think fail to compensate for the downsides of using an interpreted language rather than a compiled language. I spend way more time thinking about what code to write than writing code, so the supposed RAD aspects of Python are non-existent (for me). To me, it is the design that is important. The implementation--including which language it is implemented in--is almost trivial.

I would actually like to use Python, more because it is a popular language in the Scandinavian countries and Sweden and Norway not only have lots of harness races, they are great places for an extended vacation.

DeltaLover
11-06-2014, 11:59 AM
the current "trend" toward Python may be more failure of software developers to compete in the Java/C++ development arena than any real advantage to Python.

WOW!!!

Quite the opposite is true. My experience is that python developers are usually way more knowledgeable that their java - C# counterparts..

traynor
11-06-2014, 01:24 PM
WOW!!!

Quite the opposite is true. My experience is that python developers are usually way more knowledgeable that their java - C# counterparts..

Again, that is only your personal experience, not a definition of external reality.

I think you must be a long time out of college. Lots of computer science majors are hardcore Linux, advocate open-source, and have been programming in Python since kindergarten. It is more favored by "other" majors(engineering, bioinformatics, etc.) because it is easy to learn and fairly easy to use. As you pointed out, lots of freebies online.

However, other than its use in web development and web-related activities, it is generally considered inappropriate for serious projects, despite an immense effort by IBM (and others) to make it seem so. Lots of people use it, lots of people advocate it. Lots of people use and advocate PHP, too.

Silicon Valley is primarily Java and C++. There is a reason why Stanford teaches its computer science majors Java and C++, and MIT teaches its engineers Python. There is a place for both approaches, and a use for both approaches. It all depends what one prefers to do, and what kind of development one is doing.

traynor
11-06-2014, 01:42 PM
I think some confusion is introduced by perspective. I am not looking at the field as a programmer, but rather from a developer's point of view.

DeltaLover
11-06-2014, 01:54 PM
Again, that is only your personal experience, not a definition of external reality.

Correct, this type of opinions are judgement calls that depend on experience more than anything else.

There is a place for both approaches, and a use for both approaches. It all depends what one prefers to do, and what kind of development one is doing.

Absolutely.. The other approach which is quickly gaining momentum is the functional paradigm, which seems very promising as we move to the new generations of CPU

MJC922
11-06-2014, 06:52 PM
If one has no questions, there is no need for seeking answers. If one is happy with the results one is getting, and results one has gotten, there is no need to change.

It is hard for me to understand why anyone would bother fiddling around with Access, Excel, or a computer handicapping app unless he or she was making a consistent profit by so doing. If not, it is little more than a boring substitute for video games.

If one has the skill to apply data mining strategies (beyond the simplistic, one-dimensional queries that most Access and Excel users believe are "mining the data") Access and Excel can be useful. I cannot understand why Access and Excel users do not take advantage of apps like RapidMiner. WEKA, or Anaconda3 to mine their data, rather than piddling around writing simplistic queries. Unless it is fear that their "results" will not hold up in the real world.

Maybe I'm just dead wrong, wouldn't be the first time. I hope you're raking it in with your mining operations. Somehow I find it hard to believe software is so good that it turns your equi-base metal into gold. To be clear, my strategy has always been one to improve the inputs not to analyze the output. I have never seen software that by itself generates profits and find the notion that it would do it using data that's riddled with typos and other various anomalies particularly unlikely.

traynor
11-06-2014, 08:56 PM
Maybe I'm just dead wrong, wouldn't be the first time. I hope you're raking it in with your mining operations. Somehow I find it hard to believe software is so good that it turns your equi-base metal into gold. To be clear, my strategy has always been one to improve the inputs not to analyze the output. I have never seen software that by itself generates profits and find the notion that it would do it using data that's riddled with typos and other various anomalies particularly unlikely.

Everyone's experience is different. Some start off believing that great heaps of information can somehow be filtered to produce valuable insights. They tend to favor databases and spreadsheets, usually with many, many races.

Others look for different perspective--different ways of looking at the same data (or better data, or different data, or supplemental data) and go a different direction. Sometimes only slightly different, but enough to change the perspective. That can often provide a substantial advantage.

You are quite right that existing software applications (at least those available to the general public for less than a king's ransom) all tend to massage the same set of numbers in (very slightly) different ways, and produce little in the profit category. Nice for hobbyists and recreational bettors. Worthless for those intent on profit.

My suggestion that bettors might benefit if they learn basic programming skills is not frivolous, or a suggestion that "my way" is better. It is a way to break out of the same old, same old syndrome that keeps everyone flailing at the same set of numbers hoping for miracles.

traynor
11-06-2014, 10:05 PM
Maybe I'm just dead wrong, wouldn't be the first time. I hope you're raking it in with your mining operations. Somehow I find it hard to believe software is so good that it turns your equi-base metal into gold. To be clear, my strategy has always been one to improve the inputs not to analyze the output. I have never seen software that by itself generates profits and find the notion that it would do it using data that's riddled with typos and other various anomalies particularly unlikely.

Try:
https://www.youtube.com/watch?v=xX57xPI5I34

Robert Goren
11-06-2014, 11:53 PM
Everyone's experience is different. Some start off believing that great heaps of information can somehow be filtered to produce valuable insights. They tend to favor databases and spreadsheets, usually with many, many races.

Others look for different perspective--different ways of looking at the same data (or better data, or different data, or supplemental data) and go a different direction. Sometimes only slightly different, but enough to change the perspective. That can often provide a substantial advantage.

You are quite right that existing software applications (at least those available to the general public for less than a king's ransom) all tend to massage the same set of numbers in (very slightly) different ways, and produce little in the profit category. Nice for hobbyists and recreational bettors. Worthless for those intent on profit.

My suggestion that bettors might benefit if they learn basic programming skills is not frivolous, or a suggestion that "my way" is better. It is a way to break out of the same old, same old syndrome that keeps everyone flailing at the same set of numbers hoping for miracles.I go back and forth on whether to try to delve into it. I am pretty sure you either have to some useful data in database that most people don't have in theirs or you have to ask some questions in ways that are not asked very often. A few questions might be if you have a highly likely front runner, What has to happen for it to lose? If it loses, who wins? Another thing to look at would be high volume trainers with shippers and/or long layoffs sorted by distance and turf/dirt.

traynor
11-07-2014, 09:48 AM
I go back and forth on whether to try to delve into it. I am pretty sure you either have to some useful data in database that most people don't have in theirs or you have to ask some questions in ways that are not asked very often. A few questions might be if you have a highly likely front runner, What has to happen for it to lose? If it loses, who wins? Another thing to look at would be high volume trainers with shippers and/or long layoffs sorted by distance and turf/dirt.

One of the huge advantages of defining a block of races and running that block through WEKA (for example) is that it will generate a set of weighted values for whatever factors are defined. The value of each component is calculated in relation to the other components (rather than simply added together).

What that process exposes is something that decision theorists have known for a long time--less data often produces better results. Using more data ("validating" original premises or using more indicators) can dilute the predictive value of other indicators. Consider if you had any 10 data values for each entry. What would they be? Would adding 10 more data points improve your ability to predict the race outcome, or diminish it? Similarly, would cutting the original number of 10 data points in half increase or decrease the prediction accuracy?

http://http-server.carleton.ca/~aramirez/4406/Reviews/TPham.pdf

Using a "less is more" approach may be useful. Pick the categories of data you think are most predictive, put a block of races with those values through WEKA, get a baseline algorithm for the optimal weight to give each of those values (clicking a couple of buttons is all it takes), then apply that algorithm to another block of similar races to see how it performs. That is the essence of "machine learning"--facilities that WEKA (and similar apps) make as simple as pointing to a CSV file, defining the outcome desired, and clicking some buttons.

DeltaLover
11-07-2014, 10:34 AM
Data mining, machine based decision agents and statistical methods (ala Benter) are overvalued when it comes to horse betting.

I have read a lot about the topic and also have spent make man-weeks implementing this kind of approaches, without been able to discover a profitable solution. The closest I got, was to mimic the way the public is betting, resulting to models highly correlated to the odds lines.

I am convinced that it is impossible to create a model that will compare its percentages against the pool and start betting overlays to show profitability... In my opinion the only way you can beat this game is by selecting your spots very carefully and attack the pool aggressively when the situations are right. This is not to mean that computers are of no value when it comes to horse racing..

Quite the opposite..

Their utility though, is limited to improving our understanding of the game, building more accurate speed figures and variants, assisting in finding track biases and other similar tasks that will eventually create the input to a human based process to analyze the pools and make the bets.

The ultimate black boxed model that will keep beating the races day after day, converting the betting pools to an ATM, is simply a urban myth and nothing more..

Robert Goren
11-07-2014, 11:17 AM
One of the huge advantages of defining a block of races and running that block through WEKA (for example) is that it will generate a set of weighted values for whatever factors are defined. The value of each component is calculated in relation to the other components (rather than simply added together).

What that process exposes is something that decision theorists have known for a long time--less data often produces better results. Using more data ("validating" original premises or using more indicators) can dilute the predictive value of other indicators. Consider if you had any 10 data values for each entry. What would they be? Would adding 10 more data points improve your ability to predict the race outcome, or diminish it? Similarly, would cutting the original number of 10 data points in half increase or decrease the prediction accuracy?

http://http-server.carleton.ca/~aramirez/4406/Reviews/TPham.pdf

Using a "less is more" approach may be useful. Pick the categories of data you think are most predictive, put a block of races with those values through WEKA, get a baseline algorithm for the optimal weight to give each of those values (clicking a couple of buttons is all it takes), then apply that algorithm to another block of similar races to see how it performs. That is the essence of "machine learning"--facilities that WEKA (and similar apps) make as simple as pointing to a CSV file, defining the outcome desired, and clicking some buttons.One of the great problem, as I see it, of data mining is much of horse racing is trainer specific. It is tough to get enough good data on a good trainer because like all bright people, they are evolving at a rapid rate. Bad trainers evolve more slowly, but they have fewer winners to reverse engineer. I doubt if you just look at a block of races and don't break it down, you are going to find anything useful. Just looking at say shippers without looking at trainers is not going to useful. There is one thing that have always wonder about although it might not be useful. It involves tracks in the same circuit. Lets take BEL and SAR for an example. Lets say we are 6 weeks into SAR. One horse races the last day of BEL and the other races the first day of SAR, does the horse that raced at SAR have an advantage? Right now I think most handicappers would say "no", but they are guessing. A person with a large data base can probably come up with answers to these types of questions.
As far as putting together a list of 20 data points and come up a % and then doing a Bayes to get a 100% for the race and then betting an overlay, I doubt that is possible anymore. The whales have larger lists and have significant data points that you do not have. They are crushing any value that this method might hold out of the equation.

DJofSD
11-07-2014, 11:22 AM
One of the great problem, as I see it, of data mining is much of horse racing is trainer specific. It is tough to get enough good data on a good trainer because like all bright people, they are evolving at a rapid rate. Bad trainers evolve more slowly, but they have fewer winners to reverse engineer. I doubt if you just look at a block of races and don't break it down, you are going to find anything useful. Just looking at say shippers without looking at trainers is not going to useful. There is one thing that have always wonder about although it might not be useful. It involves tracks in the same circuit. Lets take BEL and SAR for an example. Lets say we are 6 weeks into SAR. One horse races the last day of BEL and the other races the first day of SAR, does the horse that raced at SAR have an advantage? Right now I think most handicappers would say "no", but they are guessing. A person with a large data base can probably come up with answers to these types of questions.
As far as putting together a list of 20 data points and come up a % and then doing a Bayes to get a 100% for the race and then betting an overlay, I doubt that is possible anymore. The whales have larger lists and have significant data points that you do not have. They are crushing any value that this method might hold out of the equation.
Is it possible to characterize what is a bad and a good trainer? Is there some fuzzy logic which could allow you to take the trainer centric approach to your explorations and to do so using the NoSQL tools being discussed?

Robert Goren
11-07-2014, 12:12 PM
Is it possible to characterize what is a bad and a good trainer? Is there some fuzzy logic which could allow you to take the trainer centric approach to your explorations and to do so using the NoSQL tools being discussed? I am going to have to give that some thought and get back to you. Does Baffert equal Pletcher for the purposes of looking for patterns? Like I said, I am going to have give that some thought. There is fair large bunch of good trainers, but their winners are not carbon copies of each other or at least I don't think they are. It may be possible to group bad trainers. There may be something like 5 or 10 basic types of them. So far I have only done some limited research into individual trainers. I do know that from using "Poker Tracker", you can get some feel on how people operate, if you have a large enough data base on them. When I first started betting the ponies in the 1960s , I kept track of trainers on the Nebraska circuit who had $40 winners and studied the PPs of the winning horse. I could almost "smell" another one coming sometimes. It was hard to put my finger exactly why though. I did do pretty well with that.
A quick add here. I have been reading about letting a computer program find groups for you, but I have not tried doing it. It may or may not be applicable here. I just don't enough about the process yet.

lansdale
11-07-2014, 12:48 PM
Data mining, machine based decision agents and statistical methods (ala Benter) are overvalued when it comes to horse betting.

I have read a lot about the topic and also have spent make man-weeks implementing this kind of approaches, without been able to discover a profitable solution. The closest I got, was to mimic the way the public is betting, resulting to models highly correlated to the odds lines.

I am convinced that it is impossible to create a model that will compare its percentages against the pool and start betting overlays to show profitability... In my opinion the only way you can beat this game is by selecting your spots very carefully and attack the pool aggressively when the situations are right. This is not to mean that computers are of no value when it comes to horse racing..

Quite the opposite..

Their utility though, is limited to improving our understanding of the game, building more accurate speed figures and variants, assisting in finding track biases and other similar tasks that will eventually create the input to a human based process to analyze the pools and make the bets.

The ultimate black boxed model that will keep beating the races day after day, converting the betting pools to an ATM, is simply a urban myth and nothing more..

Hi DL,

You have written numerous variations of this 'a model can't beat the races' post - do you think people like TM, Magister Ludi, sjk, Game Theory, Rook, arkansasman and more recently, Thomas Sapio are lying when they discuss have done this? You've gone so far as to say that Benter's profits are fabricated, when they're actually well-documented, as is his banning from playing in Hong Kong by the racing association. Without question, it's far from simple to achieve this - as Dave Schwarz as said, you need to be world-class - but you seem to have the abilities to do it. Regardless, I think you should accept that it's ridiculous to claim that something can't be done when it clearly has been. And you know better than most that it's impossible to prove a negative.

Cheers,

lansdale

lansdale
11-07-2014, 12:58 PM
Just to add - this is a great thread - thanks to Traynor and DL for the vast amount of information here on learning more about programming - something I need to do when I have the time.

DeltaLover
11-07-2014, 01:05 PM
Hi DL,

You have written numerous variations of this 'a model can't beat the races' post - do you think people like TM, Magister Ludi, sjk, Game Theory, Rook, arkansasman and more recently, Thomas Sapio are lying when they discuss have done this? You've gone so far as to say that Benter's profits are fabricated, when they're actually well-documented, as is his banning from playing in Hong Kong by the racing association. Without question, it's far from simple to achieve this - as Dave Schwarz as said, you need to be world-class - but you seem to have the abilities to do it. Regardless, I think you should accept that it's ridiculous to claim that something can't be done when it clearly has been. And you know better than most that it's impossible to prove a negative.

Cheers,

lansdale

All I know about Benter, is his papers and a lecture he gave in a China Math school. The information exposed in both, is very simplistic and cannot beat the game. Based in what I know, he was based in Hong Kong which is a completely different from North American racing, so even if there is some true to the claims about his huge winnings, still is not applicable to our racing...

More than this, as I have repeated many times, I will believe that beating the game, using a "probabilistic" approach, only when I see it. Either posting bets before the race or publishing a methodology that I can verify are the only two ways for me to be convinced, until then I do not have enough evidence that something like this is possible.

traynor
11-07-2014, 02:21 PM
I think those who are actually making money betting on horse races are likely to have little or no interest in exposing their methods to others. "Proving" their methods work is probably at the very bottom of a very long "TODO" list. What possible benefit could there be in "proving" such a thing? (Unless they are priming you for a sales pitch that comes later.)

DeltaLover
11-07-2014, 02:27 PM
I think those who are actually making money betting on horse races are likely to have little or no interest in exposing their methods to others. "Proving" their methods work is probably at the very bottom of a very long "TODO" list. What possible benefit could there be in "proving" such a thing? (Unless they are priming you for a sales pitch that comes later.)

You might be right, still there is not enough evidence for me the believe their claims and I do not...

traynor
11-07-2014, 02:52 PM
You might be right, still there is not enough evidence for me the believe their claims and I do not...

That is a good thing. It keeps you looking for your own ideas, insights, and solutions, rather than the ideas, insights, and solutions of others.

DeltaLover
11-07-2014, 02:54 PM
That is a good thing. It keeps you looking for your own ideas, insights, and solutions, rather than the ideas, insights, and solutions of others.

I am not opposing to loon on ideas and solutions of others, but in our case there does not seem to anything available that I can consider.

traynor
11-07-2014, 03:04 PM
One of the great problem, as I see it, of data mining is much of horse racing is trainer specific. It is tough to get enough good data on a good trainer ...

Knapsack problem

The knapsack problem or rucksack problem is a problem in combinatorial optimization: Given a set of items, each with a mass and a value, determine the number of each item to include in a collection so that the total weight is less than or equal to a given limit and the total value is as large as possible.
It derives its name from the problem faced by someone who is constrained by a fixed-size knapsack and must fill it with the most valuable items.
The problem often arises in resource allocation where there are financial constraints and is studied in fields such as combinatorics, computer science, complexity theory, cryptography and applied mathematics.

http://en.wikipedia.org/wiki/Knapsack_problem

DeltaLover
11-07-2014, 03:30 PM
Knapsack problem

The knapsack problem or rucksack problem is a problem in combinatorial optimization: Given a set of items, each with a mass and a value, determine the number of each item to include in a collection so that the total weight is less than or equal to a given limit and the total value is as large as possible.
It derives its name from the problem faced by someone who is constrained by a fixed-size knapsack and must fill it with the most valuable items.
The problem often arises in resource allocation where there are financial constraints and is studied in fields such as combinatorics, computer science, complexity theory, cryptography and applied mathematics.

http://en.wikipedia.org/wiki/Knapsack_problem

How do you apply Knapsack to the specific problem Robert is talking about?

traynor
11-07-2014, 08:10 PM
How do you apply Knapsack to the specific problem Robert is talking about?

Get rid of all the excess junk that doesn't add to the bottom line. Concentrate on that which has value--not that which follows the "accepted wisdom." Or that which seems to support preconceptions when applied to a very limited sample.

DeltaLover
11-07-2014, 08:25 PM
Get rid of all the excess junk that doesn't add to the bottom line. Concentrate on that which has value--not that which follows the "accepted wisdom." Or that which seems to support preconceptions when applied to a very limited sample.

Please give me a concrete example... I am well aware about dynamic programming and combinatorics but still cannot understand how Knapsack algo can be useful to horse betting.. It can be used for betting execution of course (to select the max possible return given a fix amount of bet), although this can easily be done by more classical approaches, the question is how to use for modelling and handicapping..

DeltaLover
11-07-2014, 08:28 PM
Get rid of all the excess junk that doesn't add to the bottom line. Concentrate on that which has value--not that which follows the "accepted wisdom." Or that which seems to support preconceptions when applied to a very limited sample.

Now that I re-read your posting, I am getting the idea that you might refer to the creation of a universe of factors and try to detect those who maximize utility, if this is the case what is going to be your constant variable that you try to fit?

traynor
11-07-2014, 11:12 PM
Please give me a concrete example... I am well aware about dynamic programming and combinatorics but still cannot understand how Knapsack algo can be useful to horse betting.. It can be used for betting execution of course (to select the max possible return given a fix amount of bet), although this can easily be done by more classical approaches, the question is how to use for modelling and handicapping..

You are looking at a specfic algorithm. I am looking at the concept behind the algorithm.

traynor
11-08-2014, 12:16 AM
Now that I re-read your posting, I am getting the idea that you might refer to the creation of a universe of factors and try to detect those who maximize utility, if this is the case what is going to be your constant variable that you try to fit?

Perhaps because it is late and I have had a very tiring day, I have no idea what you are asking. Seriously.

DeltaLover
11-08-2014, 02:52 AM
Perhaps because it is late and I have had a very tiring day, I have no idea what you are asking. Seriously.

An example where knapsack can be useful for handicapping purposes!

traynor
11-08-2014, 11:25 AM
An example where knapsack can be useful for handicapping purposes!


This is getting to be like the person who got lost in the forest while busily counting trees. I think the value of the knapsack is in the underlying reasoning involved--locating and isolating the "most valuable items" with constraints against dumping everything into a huge pile.

For detailed explanations, you may want to do a bit of research on the Chinese approach to optimizing supply chains. Interesting stuff. Again, because of the conceptual framework used, not because of the specific formulas or the implementation of those formulas.

DeltaLover
11-08-2014, 11:39 AM
This is getting to be like the person who got lost in the forest while busily counting trees. I think the value of the knapsack is in the underlying reasoning involved--locating and isolating the "most valuable items" with constraints against dumping everything into a huge pile.

For detailed explanations, you may want to do a bit of research on the Chinese approach to optimizing supply chains. Interesting stuff. Again, because of the conceptual framework used, not because of the specific formulas or the implementation of those formulas.

Is this the best example you can come up with?

traynor
11-08-2014, 02:53 PM
Is this the best example you can come up with?

I didn't realize it was an example. I thought it was encouragement to look at an area in which your understanding may be usefully expanded in regard to what is important and what is not. It is pointless to crunch numbers that are of little signicance, just because they happen to be there.

DJofSD
11-08-2014, 04:30 PM
I didn't realize it was an example. I thought it was encouragement to look at an area in which your understanding may be usefully expanded in regard to what is important and what is not. It is pointless to crunch numbers that are of little signicance, just because they happen to be there.
I was hoping for a concrete example too.

traynor, here is where I could use a little help. Can you differentiate between the approach you are outlining using tools like the NoSQL databases, and, things like fuzzy logic, neural networks or other techniques.

traynor
11-08-2014, 05:27 PM
I was hoping for a concrete example too.

traynor, here is where I could use a little help. Can you differentiate between the approach you are outlining using tools like the NoSQL databases, and, things like fuzzy logic, neural networks or other techniques.

I think databases (Access, NoSQL, MySQL, or whatever) are mainly useful to collect clumps of data is some orderly fashion, that can then be manipulated/analyzed/parsed/searched/evaluated using other means. The same goes for spreadsheets.

I use CSV text files, because that is what I have found to be the easiest format (for me) to use with the data mining apps I use. I could use Access, Excel, or some other format just as easily--the data mining apps work as well on other formats.

traynor
11-08-2014, 05:55 PM
I think there is a very strong tendency for research to "reveal" the preconceptions of the researcher. An example would be backfitting to a specific block of races, and assuming the results can be extrapolated as applicable to other groups of races--with absolutely no proof that is true. Or searching a very large fruit salad database and declaring there are no such things as apples or oranges.

The value of using a dedicated data mining app over creating one's own queries and search parameters is that one is less likely to generate the results sought (as opposed to the results that are really there).

badcompany
11-08-2014, 06:38 PM
I believe the point being debated here is whether or not computer programs take the "art" out of handicapping or trading.

IMO, they don't. They just help organize the data better. The "art" is still in how you use the data, or massage it, to use Traynor's term.

traynor
11-08-2014, 08:24 PM
I believe the point being debated here is whether or not computer programs take the "art" out of handicapping or trading.

IMO, they don't. They just help organize the data better. The "art" is still in how you use the data, or massage it, to use Traynor's term.

Absolutely--with the addition that computer programs can assist in fine tuning the art portion. That is why I stress the importance of doing it yourself. Plugging someone else's algorithm into your method/software/database only works as well as (and as long as) that algorithm is productive. If you learn the "why" part of algorithms (not difficult), it is easy to detect changes in the external environment and create new algorithms to leverage that knowledge into profit.

The most (sorry for the obscure term from psychology, but it fits) "extinguishing" behavior is to depend on a software app to "pick winners." That is, overreliance on software diminishes the "art" portion, and deteriorates the ability to handicap races without the specific software. All the software can do is execute formulas and algorithms. The great thing about horse racing is that those formulas and algorithms are constantly changing, as new knowledge (of results) changes bettor behavior. A bettor who understands how to write his or her own algorithms--and why--will always be able to stay ahead of the crowd.

Hoofless_Wonder
11-13-2014, 01:41 AM
Chances are that this guy was not a professional programmer but a scientist who was using the tool he knew the best. I can assure you, that although Excel and OO, both can be useful when working with data, they are never considered as an alternative to 'real' programming languages.

Actually Delta, this guy would correct the code of the dozen other C++ and IDL programmers on the project every day, with a line at his door much of the day. When I asked him why he used Excel versus coding an analysis tool his response was simple - with constantly changing data sets (like horse racing), he could reload the latest data stream from testing, tweak some macros, and test the results the much more quickly than changing code and recompiling.

The right tool for the job.

Hoofless_Wonder
11-13-2014, 01:45 AM
Windows Power Shell has nothing to do with porting Unix commands to DOS (!). Instead it is a complicated and substandard framework to expose DotNet (and the underlined COM technologies) to the command line. A framework that is close to what you are describing here is https://www.cygwin.com/, but still is far from linux, since by default is loosing a lot of the flexibility of the command line as can be found in bash, ksh, tcsh or zsh.

I won't argue with the underlying components of what Power Shell is, but this chart clearly demonstrates to me that one of the goals is to allow the gaps between Windows and Unix scripting to be bridged. Many commands are the same.

http://cecs.wright.edu/~pmateti/Courses/233/Labs/Scripting/bashVsPowerShellTable.html

I can cat a file in Power Shell, while in DOS not so much.

The trend in the industry is for fewer support folks, and this is one way to prolong the agony of Windows.

Hoofless_Wonder
11-13-2014, 02:18 AM
SAS is not a programming language and its approach to to computing belongs in 80s. The 'scripting' languages you are referring to, represent both the present and the future when it comes to software development and by no means they can be seen as competitors to arcane approaches like SAS

I'd have to ask you to explain this view, as I recall SAS being described as a 4GL, and their website claims 36 years of history. SAS is still very popular with many of my customers, and is perfect for analyzing large data sets, and least how I remember it. Even a hack like me could get accurate results with minimal effort, if I could remember to put a semi-colon at the end of each line. I'm not sure what a private user's license would cost, but I bet it's still expensive.

When I was working as a climatologist in the Air Force back in the mid 1980s, several weeks after the Challenger disaster, our department received a request from Congress for a complete weather analysis of all 25 shuttle launches. In two days, one of my co-workers (TSgt) wrote a 700 line SAS routine from scratch which provided a couple of boxes of output data that they wanted - temperature, humidity, winds, etc, launch by launch, stats, and the rest. For my contribution, I stay out of his way and kept his coffee cup full.

Another peer of mine (Capt) began writing JCL to use our canned FORTRAN routines to generate the same output. After a week, he was about 1/3 of the way through it. Perhaps he wasn't a very good programmer. But what I came away with is that I thought programming would become much easier over time as other products like SAS came out and let users do their own programming versus relying on coders. But this has not been the case, at least from what I can tell. And I think part of the reason this is true is the "moat" that developers and vendors want to keep in place to protect their business.

I've made a good living bridging the gap in integration, test and application support between "purists" and talented developers like yourself, and the masses who struggle to log into their PC. Your views expressed in this thread are typical of an egghead, but are more in tune with the minority of handicappers/horseplayers, and not the majority who just want to crunch some numbers. Horse racing, at a level most players can understand, doesn't require anything too complicated from a programming perspective. Generate an adjusted speed figure, some basic pace projections, a few trainer/jockey stats, and many players would be happy with that - if they could write that much.

I will agree with you on one point, and that is that a good programmer, like in most other career fields, is a pretty rare bird. I don't think this is necessarily a snobbish view, but just reality. I've worked with several hundred developers over the years testing and using their code, and many of them are 'posers, and only a handful were truly talented - especially when it comes to fixing bugs in code other than their own....

DeltaLover
11-13-2014, 05:42 AM
I'd have to ask you to explain this view, as I recall SAS being described as a 4GL, and their website claims 36 years of history. SAS is still very popular with many of my customers, and is perfect for analyzing large data sets, and least how I remember it. Even a hack like me could get accurate results with minimal effort, if I could remember to put a semi-colon at the end of each line. I'm not sure what a private user's license would cost, but I bet it's still expensive.

When I was working as a climatologist in the Air Force back in the mid 1980s, several weeks after the Challenger disaster, our department received a request from Congress for a complete weather analysis of all 25 shuttle launches. In two days, one of my co-workers (TSgt) wrote a 700 line SAS routine from scratch which provided a couple of boxes of output data that they wanted - temperature, humidity, winds, etc, launch by launch, stats, and the rest. For my contribution, I stay out of his way and kept his coffee cup full.

Another peer of mine (Capt) began writing JCL to use our canned FORTRAN routines to generate the same output. After a week, he was about 1/3 of the way through it. Perhaps he wasn't a very good programmer. But what I came away with is that I thought programming would become much easier over time as other products like SAS came out and let users do their own programming versus relying on coders. But this has not been the case, at least from what I can tell. And I think part of the reason this is true is the "moat" that developers and vendors want to keep in place to protect their business.

I've made a good living bridging the gap in integration, test and application support between "purists" and talented developers like yourself, and the masses who struggle to log into their PC. Your views expressed in this thread are typical of an egghead, but are more in tune with the minority of handicappers/horseplayers, and not the majority who just want to crunch some numbers. Horse racing, at a level most players can understand, doesn't require anything too complicated from a programming perspective. Generate an adjusted speed figure, some basic pace projections, a few trainer/jockey stats, and many players would be happy with that - if they could write that much.

I will agree with you on one point, and that is that a good programmer, like in most other career fields, is a pretty rare bird. I don't think this is necessarily a snobbish view, but just reality. I've worked with several hundred developers over the years testing and using their code, and many of them are 'posers, and only a handful were truly talented - especially when it comes to fixing bugs in code other than their own....

As you say SAS is a 4GL, a term that I might even refine even more to a DSL, targeting statistics and math, having a user base consisting mainly from professional mathematicians. It competes with R and probably mathematica, matlab and octave while it is a proprietary technology carrying all the related disadvantages..

As many other old technologies (like COBOL, DELPHI, LISP and btrieve just to name a few), SAS refuses to die and still has its merit in some of the niche markets that have adopted it; besides that, it still represents an antiquated approach to computing and as such, it fails to evolve and expand its community to wider groups of interest.

In computing (more and faster than any other industry) moving forward, is a one way direction and those who fail to demonstrate the agility to adapt quickly and stay on top of it, sooner or later fall out of fashion, eventually becoming technological dinosaurs, trying to explain, why the once promising and looking omnipotent technology of their choice, failed to dominate the world losing to battle of evolution to others...

DJofSD
11-13-2014, 06:26 AM
I have used SAS. It is a nice language for processing records and, as it has from the very beginning, performing statistical analysis. It's the right tool for the job.

Why would it ever go away and die?

DeltaLover
11-13-2014, 08:08 AM
I have used SAS. It is a nice language for processing records and, as it has from the very beginning, performing statistical analysis. It's the right tool for the job.

Why would it ever go away and die?

I do think I stated that it will go away, still it will never become a mainstream language used by a specific niche. As I said in my previous posting computing is about moving ahead as quick as possible and not remaining stale and static

DJofSD
11-13-2014, 08:22 AM
The SAS Institute promote their products as best they can and even though they would like to have the world believe them to be main stream, the core SAS offerings have always filled a niche. That niche is not something every computer user or programmer is exposed to, let alone having to program for. SAS does a good job handling a certain class tasks. Expanding that class to include general programming tasks is a mistake.

Change for changes sake is pointless. Solve the problems, use new and different perspectives to learn to solve old problems in new ways, and, yes, if it means a new language, sure. But a hammer is always going to be a hammer.

Robert Goren
11-13-2014, 08:31 AM
The SAS Institute promote their products as best they can and even though they would like to have the world believe them to be main stream, the core SAS offerings have always filled a niche. That niche is not something every computer user or programmer is exposed to, let alone having to program for. SAS does a good job handling a certain class tasks. Expanding that class to include general programming tasks is a mistake.

Change for changes sake is pointless. Solve the problems, use new and different perspectives to learn to solve old problems in new ways, and, yes, if it means a new language, sure. But a hammer is always going to be a hammer. Can I quote you on that? I can't remember the number of times I have want convey that message, but could not find the right words.

DeltaLover
11-13-2014, 08:32 AM
Change for changes sake is pointless. Solve the problems, use new and different perspectives to learn to solve old problems in new ways, and, yes, if it means a new language, sure. But a hammer is always going to be a hammer.

I see the "change for the change sake" as the main characteristic of proprietary platforms, who need to come up with new versions and releases, just to keep business going. Obvious example of this kind of a behaviour can of course be found on M$ and all of their products...

The same does not apply to open source projects, where change is organically driven, by real needs and innovations and in my opinion this is the right path to follow and keep up with.

DJofSD
11-13-2014, 08:41 AM
Can I quote you on that? I can't remember the number of times I have want convey that message, but could not find the right words.
Be my guest. ;)

It's just a corollary to 'when the only tool you have is a hammer, every problem looks like a nail' or however it goes.

DJofSD
11-13-2014, 08:48 AM
I see the "change for the change sake" as the main characteristic of proprietary platforms, who need to come up with new versions and releases, just to keep business going. Obvious example of this kind of a behaviour can of course be found on M$ and all of their products...

The same does not apply to open source projects, where change is organically driven, by real needs and innovations and in my opinion this is the right path to follow and keep up with.
Can't disagree but I don't agree completely. I would guess our experiences and perspectives have some overlaps.

Real needs is subjective. I can recount numerous examples where those needs changed as circumstances changed.

traynor
11-13-2014, 11:48 AM
I do think I stated that it will go away, still it will never become a mainstream language used by a specific niche. As I said in my previous posting computing is about moving ahead as quick as possible and not remaining stale and static

Well, that seems to have worked well--and to be working well--for Microsoft.

DJofSD
11-13-2014, 11:49 AM
Not so much for DEC.

DeltaLover
11-13-2014, 11:50 AM
Well, that seems to have worked well--and to be working well--for Microsoft.

M$ excels in the domain of 'changes for the sake of a change' with Apple been a runner up

DJofSD
11-13-2014, 11:55 AM
M$ excels in the domain of 'changes for the sake of a change' with Apple been a runner up
That could be true but it is difficult for me to differentiate between change brought on by demands from users, changes by technology both S/W and H/W and other factors such as long term plans which take multiple steps to implement.

traynor
11-13-2014, 12:04 PM
I see the "change for the change sake" as the main characteristic of proprietary platforms, who need to come up with new versions and releases, just to keep business going. Obvious example of this kind of a behaviour can of course be found on M$ and all of their products...

The same does not apply to open source projects, where change is organically driven, by real needs and innovations and in my opinion this is the right path to follow and keep up with.

I think if that were even close to true, the "open-source community" would be much more widely accepted by enterprise organizations than it is--and that it shows any indication of being in the future. "Wide acceptance" of free technology used as an indicator is highly misleading. Many computer users (especially in India, China, and The Phillipines) routinely download every tacky little "technology" offered, just to poke around with it. Put a pricetag on it (as in "this has value in the real world") and open-source falls seriously behind.

The "trend toward open-source" may be way more hype based on "anti-Microsoft" sentiment on the fringes than it is on the actual value of the technology.

I have nothing against open-source, as I have mentioned before. I am extremely pragmatic--I think the best tool to use for a specific purpose is the best tool to use for that specific purpose. That precludes layering my subjective biases on the external world and "interpreting" that external world in a manner that confirms my internal, subjective beliefs, despite overwhelming discomfirming evidence to the contrary.

I think open-source is an interesting idea, and that it definitely has a place in the world (Spain and Argentina come to mind immediately, because of governmental policies in those two countries). I don't think that place will be at the top--or anywhere near the top--of the technology food chain. YMMV.

DJofSD
11-13-2014, 12:09 PM
http://www.raywenderlich.com/75601/learn-to-code-ios-apps-with-swift-tutorial-1

barn32
11-13-2014, 01:24 PM
I wish I understood this thread.

Hoofless_Wonder
11-13-2014, 04:03 PM
I see the "change for the change sake" as the main characteristic of proprietary platforms, who need to come up with new versions and releases, just to keep business going. Obvious example of this kind of a behaviour can of course be found on M$ and all of their products...

The same does not apply to open source projects, where change is organically driven, by real needs and innovations and in my opinion this is the right path to follow and keep up with.

The main problem I see with Open Source is the requirement to manage the environment pushed back in the lap of customers. I've watched many application support folks get pushed off of Unix on to Linux because the hardware architects made them get to an Intel box to make their job easier, and to make it appear they were saving money by standardizing.

The reality is that money saved by going to Red Hat versus AIX or Solaris was soon eaten up by the extra care and feed and instability of the operating system. In theory, Open Source sounds like a great idea, but the reality is there's a price to be paid when signing up for an environment where nobody is "driving the bus". This is especially true in shops where labor costs have been shaved, and the lead system admin used to be the night janitor.

Back to SAS. If it's so archaic and only a niche product, then I find that surprising. Can you please provide the name of a language or set of tools that's as user friendly for non-heavy-duty programmers, and will be around in 2024? I'm currently banking on python being around, but it's not even close to SAS in usability.....IMHO.

DeltaLover
11-13-2014, 04:31 PM
The main problem I see with Open Source is the requirement to manage the environment pushed back in the lap of customers. I've watched many application support folks get pushed off of Unix on to Linux because the hardware architects made them get to an Intel box to make their job easier, and to make it appear they were saving money by standardizing.

The reality is that money saved by going to Red Hat versus AIX or Solaris was soon eaten up by the extra care and feed and instability of the operating system. In theory, Open Source sounds like a great idea, but the reality is there's a price to be paid when signing up for an environment where nobody is "driving the bus". This is especially true in shops where labor costs have been shaved, and the lead system admin used to be the night janitor.

Back to SAS. If it's so archaic and only a niche product, then I find that surprising. Can you please provide the name of a language or set of tools that's as user friendly for non-heavy-duty programmers, and will be around in 2024? I'm currently banking on python being around, but it's not even close to SAS in usability.....IMHO.

Whether Python will retain it current momentum in 2024 or 2034 is not one of the requirements in my language selection list; my criteria when it comes to my language(s) of choice are more pragmatic than trying to predict the future..


What makes attractive a language to me, has to do with its expressibility, community base, open source libraries and user base.


A language like python, which excels in pretty much any conceivable domain, starting from scientific programming, passing from financial applications and thriving in Web Development, is certainly a good choice in our days and one that I am happy to work with...




Since you talk about SAS usability, I have to ask the following questions: - How good SAS supports OOP? How polymorphism and run time inheritance is handled onit? Is operator overloading possible?

- What are the reflective capabilities of SAS? Is IoC even possible in it?

- Does SAS supports decorators and functions as first class citizens? How about closures? Are lambdas supported?

- Can you suggest an ORM for SAS?

- How easy it is to talk to NoSQL (like mongo or casandra for example) from SAS?

- Is unit testing part of the SAS culture and how well do they fit under a continuous integration system like jenkins, hudson etc..

- What is SAS answer to generic polymorphism (similar to C++ templates or C# generics)?

DJofSD
11-13-2014, 05:32 PM
SAS -- this is mostly what I have used and supported in the past: http://support.sas.com/software/products/base/index.html . It is a procedural environment used to process, analyze and generate reports about data. Is it a programming language? No, not in the sense you mean.

What you are likely more concerned with is this: http://support.sas.com/rnd/appdev/index.html . This part of what SAS Institute offers is unfamiliar to me -- I've never supported it or used it. But I do see references to JSON, Hadoop, Eclipse and more, so, it might be more germane for the discussion about modern/current programming languages.

Hoofless_Wonder
11-13-2014, 06:09 PM
Whether Python will retain it current momentum in 2024 or 2034 is not one of the requirements in my language selection list; my criteria when it comes to my language(s) of choice are more pragmatic than trying to predict the future..


What makes attractive a language to me, has to do with its expressibility, community base, open source libraries and user base.

What I find more attractive in a programming language is its stability, backwards compatibility and ease of maintenance. Nothing frustrates customers and end users more than applying a patch to an obscure library, and breaking the whole application. Although python makes the cut from your point of view, it's well beyond the capability of many if not most sys admins today.

I'm looking at this from a pragmatic point of view, and not as concerned about style points.

Since you talk about SAS usability, I have to ask the following questions: - How good SAS supports OOP? How polymorphism and run time inheritance is handled onit? Is operator overloading possible?

- What are the reflective capabilities of SAS? Is IoC even possible in it?

- Does SAS supports decorators and functions as first class citizens? How about closures? Are lambdas supported?

- Can you suggest an ORM for SAS?

- How easy it is to talk to NoSQL (like mongo or casandra for example) from SAS?

- Is unit testing part of the SAS culture and how well do they fit under a continuous integration system like jenkins, hudson etc..

- What is SAS answer to generic polymorphism (similar to C++ templates or C# generics)?

I'm not sure if you're trying to impress us with your theoretical knowledge of programming or if you're trying to make some other point, but how are any of these questions relevant to the thread topic of "Why Learn Basic Programming Skills?"

We're not trying to land a man on the moon here, the goal is to just pick a few winners at the track....

DeltaLover
11-13-2014, 06:22 PM
What I find more attractive in a programming language is its stability, backwards compatibility and ease of maintenance. Nothing frustrates customers and end users more than applying a patch to an obscure library, and breaking the whole application. Although python makes the cut from your point of view, it's well beyond the capability of many if not most sys admins today.

I'm looking at this from a pragmatic point of view, and not as concerned about style points.



I'm not sure if you're trying to impress us with your theoretical knowledge of programming or if you're trying to make some other point, but how are any of these questions relevant to the thread topic of "Why Learn Basic Programming Skills?"

We're not trying to land a man on the moon here, the goal is to just pick a few winners at the track....
Impress? I don't know about that. These are features I use daily and have nothing exotic or theoretical assosiated with them. I would feel miserable if I had to function without them, that's all.

headhawg
11-13-2014, 07:41 PM
I'm not sure if you're trying to impress us with your theoretical knowledge of programming or if you're trying to make some other point, but how are any of these questions relevant to the thread topic of "Why Learn Basic Programming Skills?75% of the posts here have had nothing to do with the thread topic as I understood it. Same kind of the thing happened in Pandy's new book thread. It's a bad trend.

DJofSD
11-14-2014, 07:48 AM
75% of the posts here have had nothing to do with the thread topic as I understood it. Same kind of the thing happened in Pandy's new book thread. It's a bad trend.
See #159.

traynor
11-14-2014, 08:43 AM
See #159.

Swift looks like the perfect choice for a first language (or second or tenth). The tutorials are great! I almost wish I used Apple. Thanks for posting the link.

DJofSD
11-14-2014, 08:47 AM
Swift is a moving target -- Apple has not yet completely nailed down all aspects of the language. However, as far as a beginner is concerned, those essential aspects of learning the language are there and will not be changing.

I'm sure at some point, those whom learn Swift will look back at Objective C and say 'yuck!'

traynor
11-14-2014, 03:14 PM
And speaking of business models:
http://www.bbc.com/news/business-30059820

"Competition" from open-source does not seem to be much of a concern to Microsoft. $410 billion is a very large sum. Even for the 800 pound gorilla.

Rather than criticizing Microsoft's business model, it might be well to emulate it. They seem to have it down pat.

badcompany
11-15-2014, 10:08 AM
I found this book in the basement of my building. Is there anything in there that is still relevant, today?

http://i95.photobucket.com/albums/l142/thinlizzy21/ECF43D7E-19CD-480E-8E7D-5523DE1C19F6_zpsxx2zzaje.jpg (http://s95.photobucket.com/user/thinlizzy21/media/ECF43D7E-19CD-480E-8E7D-5523DE1C19F6_zpsxx2zzaje.jpg.html)

DJofSD
11-15-2014, 10:45 AM
Read the review section here: http://www.amazon.com/Microsoft-Excel-2000-Power-Programming/dp/0764532634

badcompany
11-15-2014, 11:39 AM
Read the review section here: http://www.amazon.com/Microsoft-Excel-2000-Power-Programming/dp/0764532634

Pretty impressive reviews, and the few bad ones seem like they were from whiners who are never happy with anything.

DJofSD
11-15-2014, 12:13 PM
Pretty impressive reviews, and the few bad ones seem like they were from whiners who are never happy with anything.
That's true -- some are never satisfied. :rolleyes:

So, depending upon what your present needs are that book could be just right. An intro to a back level version of Excel will get you started.

But if you are looking for more of a general introduction to modern app development, you would be better served to find something else.

badcompany
11-15-2014, 07:16 PM
That's true -- some are never satisfied. :rolleyes:

So, depending upon what your present needs are that book could be just right. An intro to a back level version of Excel will get you started.

But if you are looking for more of a general introduction to modern app development, you would be better served to find something else.

I actually have a lot of experience working with spreadsheets for basic functions, primarily adding up rows and columns of numbers, but I never did any programming with them.

What exactly would a spreadsheet program do?

traynor
11-15-2014, 07:52 PM
I actually have a lot of experience working with spreadsheets for basic functions, primarily adding up rows and columns of numbers, but I never did any programming with them.

What exactly would a spreadsheet program do?

It depends what you use it for. Spreadsheets can do a lot, if beefed up with macros and VBA. The problem is that once you get beyond the basic functions, increased effort is needed to "do stuff." The more complex the stuff, the greater the effort required. Same is true of databases. Yes, they do a lot of stuff--provided a lot of effort is put into the planning, design, and coding of the stuff.

The spreadsheet and database advocates are good examples of the sunk cost fallacy--by the time they realize they would have been better off to have started coding a dedicated app from scratch, they have too much time and effort invested to let it go.

It is strictly my own peculiar use (primarily horse race analysis), but I have never seen anything persuasive about using a spreadsheet or database in preference to a dedicated application. It is not unfamiliarity. I have extensive experience with both spreadsheets and databases. I just don't think they are appropriate for race analysis or race modeling, other than acting as storage containers for data.

MJC922
11-15-2014, 08:03 PM
I found this book in the basement of my building. Is there anything in there that is still relevant, today?

Still somewhat relevant, VBA probably hasn't changed much since then, VBA is essentially VB6 for Office apps. Excel has changed a bit, the ribbon UI, there's no longer a 65000 row limit but a million rows and things like that. A book like this which generally started with high marks typically sees a refresh with each new version of Excel and in so doing they will cover any new features and put new screenshots in it to capture the UI changes etc. I probably wouldn't want to get serious about Excel 2007 or newer and then want to spend a lot of time with a book that dated but I still have a lot on my shelf which is nearly as old.

MJC922
11-15-2014, 08:37 PM
And speaking of business models:
http://www.bbc.com/news/business-30059820

"Competition" from open-source does not seem to be much of a concern to Microsoft. $410 billion is a very large sum. Even for the 800 pound gorilla.

Rather than criticizing Microsoft's business model, it might be well to emulate it. They seem to have it down pat.

I agree open-source is nice but once you get into doing business with some of the larger global corporations who deal with the government (Fortune 50 etc) they don't even want their devs using open source anything (for legal reasons believe it or not). Where I work I've seen our devs go and do it anyway using an open source db on the back-end but it's frowned upon.

traynor
11-15-2014, 09:00 PM
I agree open-source is nice but once you get into doing business with some of the larger global corporations who deal with the government (Fortune 50 etc) they don't even want their devs using open source anything (for legal reasons believe it or not). Where I work I've seen our devs go and do it anyway using an open source db on the back-end but it's frowned upon.

My experience is similar. Open-source is nice in theory, not so good in application.

badcompany
11-16-2014, 01:30 PM
I've decided the language I will learn is Python.

Why?

I recently learned it was named after Monty Python. So, the guy who created it has to have a sense of humor.

DJofSD
11-16-2014, 01:34 PM
http://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-us-universities/fulltext

HUSKER55
11-16-2014, 01:50 PM
if you are crunching numbers wouldn't fortran be easier

DeltaLover
11-16-2014, 01:51 PM
I've decided the language I will learn is Python.

good choice :ThmbUp::ThmbUp:

highnote
11-16-2014, 07:02 PM
Here is basic language code for Dick Mitchell's "Positive Expectation Handicapping" software. I believe this was in one of his books.

You might need to adjust some of the lines to make it work. It's a command line program.

This is the code I used to begin to learn how to write code for horse racing.


10 B$ = Chr$(7)
Dim CL(20), CW(20), ES(20), FR(20), LS(20), RS(20), SP(20), XX(20), Z1(20), Z2(20), Z3(20), Z5(20), Z6(20), Z7(20)
Dim CM(20), CN(20), ML(20), P(20), S(20), K(20), L(20), MS(20), CF(20)

40 For I = 1 To 25: Print: Next I
50 INPUT "ENTER TODAY'S DATE "; A$
GoSub 3400
If FU$ = "" Then DA$ = A$: GoTo 90
80 GoTo 50
90 INPUT "ENTER TRACK NAME "; A$
If A$ = "999" Then GoTo 50
TK$ = A$
If TK$ = "" Then GoTo 90
130 INPUT "ENTER RACE NUMBER "; RN$
If RN$ = "999" Then GoTo 90
If RN$ = "" Then GoTo 130
RN = Val(RN$)
If RN <> Int(RN) Then Print B$: GoTo 130
If RN < 1 Or RN > 18 Then Print B$: GoTo 130
190 INPUT "DISTANCE - # OF FURLONGS "; DF$
If DF$ = "999" Then GoTo 130
If DF$ = "" Then GoTo 190
DF = Val(DF$)
If DF < 5 Or DF >= 9.5 Then Print B$: GoTo 190
Print
250 INPUT "ABOVE CORRECT (Y OR N) "; Z$
If Z$ = "999" Then GoTo 190
If Z$ <> "Y" And Z$ <> "N" Then Print B$: GoTo 250
If Z$ = "Y" Then GoTo 300
If Z$ = "N" Then GoTo 40
300 N = N + 1
For I = 1 To 24: Print: Next
320 If N = 0 Then N = 1
330 Print "NAME OF HORSE #"; N; " ";
INPUT ""; NH$
If NH$ = "0" Then GoTo 1530
If NH$ = "999" Then N = N - 1: GoTo 320
NH$(N) = NH$
380 INPUT "# OF RACES THIS YEAR "; R$
If R$ = "999" Then GoTo 330
If R$ = "" Then GoTo 380
R = Val(R$)
If R < 3 Then Print B$: GoTo 380
430 INPUT "# OF WINS THIS YEAR "; W$
If W$ = "" Then GoTo 430
If W$ = "999" Then GoTo 380
A$ = W$: GoSub 3690
If FU$ <> "" Then Print B$: GoTo 430
WN = Int(Val(W$))
If WN > R Then Print B$: GoTo 380
500 INPUT "# OF SECONDS THIS YEAR "; SS$
If SS$ = "" Then GoTo 500
If SS$ = "999" Then GoTo 430
A$ = SS$: GoSub 3690
If FU$ <> "" Then Print B$: GoTo 500
SS = Int(Val(SS$))
If WN + SS > R Then Print B$: GoTo 380
570 INPUT "# OF THIRDS THIS YEAR "; TT$
If TT$ = "" Then GoTo 570
If TT$ = "999" Then GoTo 500
A$ = TT$: GoSub 3690
If FU$ <> "" Then Print B$: GoTo 570
TT = Val(TT$)
If R < (WN + SS + TT) Then Print B$: GoTo 380
640 INPUT "TOTAL $ WON THIS YEAR "; TD$
If TD$ = "" Then GoTo 640
If TD$ = "999" Then GoTo 570
A$ = TD$: GoSub 3690
If FU$ <> "" Then Print B$: GoTo 640
TD = Val(TD$)
If R = 0 Then R = 1
CN(N) = TD / R
CW(N) = (WN / R) * 100
CM(N) = ((WN + SS + TT) / R) * 100
740 INPUT "ENTER DATE OF LAST RACE "; A$
If A$ = "999" Then GoTo 640
GoSub 3400
If FU$ = "" Then DR$ = A$: GoTo 790
GoTo 740
790 INPUT "# OF FURLONGS - BEST RACE "; A$
If A$ = "" Then Print B$: GoTo 790
If A$ = "999" Then GoTo 740
F = Val(A$)
If F < 5 Or F >= 9.5 Then Print B$: GoTo 790
840 INPUT "SURFACE (D OR T) "; A$
If A$ = "" Then Print B$: GoTo 840
If A$ = "999" Then GoTo 790
If A$ <> "T" And A$ <> "D" Then Print B$: GoTo 840
ST$ = A$
890 INPUT "TIME FIRST CALL (SECONDS,FIFTHS) "; S, FS
If S = 999 Or FS = 999 Then GoTo 840
GoSub 3630
If FU$ <> "" Then GoTo 890
FF = S + 0.2 * FS
If F < 8 Then GoTo 1010
950 INPUT "TIME 2ND CALL (M,S,F) "; M, S, FS
If M = 999 Or S = 999 Or FS = 999 Then GoTo 890
GoSub 3630
If FU$ <> "" Then GoTo 950
SF = M * 60 + S + 0.2 * FS
GoTo 1060
1010 INPUT "TIME 2ND CALL (S,F) "; S, FS
If S = 999 Or FS = 999 Then GoTo 890
GoSub 3630
If FU$ <> "" Then GoTo 1010
SF = S + 0.2 * FS
1060 INPUT "FINAL TIME (M,S,F) "; M, S, FS
If (M = 999 Or S = 999 Or FS = 999) And (F >= 8) Then GoTo 950
If (M = 999 Or S = 999 Or FS = 999) And (F < 8) Then GoTo 1010
GoSub 3630
If FU$ <> "" Then GoTo 1060
TF = M * 60 + S + 0.2 * FS
1120 INPUT "TRACK CATEGORY (1,2,3) "; A$
If A$ = "" Then Print B$: GoTo 1120
If A$ = "999" Then GoTo 1060
If A$ <> "1" And A$ <> "2" And A$ <> "3" Then Print B$: GoTo 1120
TC = Val(A$)
1170 INPUT "1ST CALL (POSITION,LENGTHS) "; PO, LA
If PO = 999 Or LA = 999 Then GoTo 1120
If PO <> Int(PO) Then Print B$: GoTo 1170
If PO = 1 Then LA = 0
1210 INPUT "2ND CALL (POSITION,LENGTHS) "; PX, LB
If PX = 999 Or LB = 999 Then GoTo 1170
If PX <> Int(PX) Then Print B$: GoTo 1210
If PX = 1 Then LB = 0
1250 INPUT "STRETCH CALL (POS,LENGHTS) "; PY, LC
If PY = 999 Or LC = 999 Then GoTo 1210
If PY <> Int(PY) Then Print B$: GoTo 1250
1280 INPUT "FINAL CALL (POS,LENGTHS) "; PZ, LD
RN = Val(RN$)
If PZ <> Int(PZ) Then Print B$: GoTo 1280
If PZ = 1 Then LD = 0
1320 PRINT : INPUT "ABOVE CORRECT? (Y OR N) "; Z$
If Z$ <> "Y" And Z$ <> "N" Then GoTo 1320
If Z$ = "Y" Then GoTo 1360
GoTo 1280
1360 A$ = DR$
GoSub 3220
If TC = 1 Then CF = 1
If TC = 2 Then CF = 0.9
If TC = 3 Then CF = 0.85
If R1 - R2 < 0 Then Print B$: Print B$: Print "DATE IS IN ERROR": GoTo 330
If R1 - R2 > 90 Then CF = CF * 0.85: GoTo 1450
If R1 - R2 > 60 Then CF = CF * 0.9: GoTo 1450
If R1 - R2 > 30 Then CF = CF * 0.95
1450 If ST$ = "T" Then CF = CF / 0.988
CF(N) = CF
If F < 8 Then D1 = 1320: D2 = 2640: D3 = F * 660: GoTo 1490
D1 = 2640: D2 = 3960: D3 = F * 660
1490 ES(N) = (D1 - 10 * LA) / FF: ES(N) = (ES(N) * 100) / (61.8 - (0.93 * F))
MS(N) = (D2 - 10 * LB) / SF: MS(N) = (MS(N) * 100) / (61.8 - (0.93 * F))
LS(N) = (D3 - 10 * LD) / TF: LS(N) = (LS(N) * 100) / (61.8 - (0.93 * F))
GoTo 300
1530 N = N - 1
For I = 1 To 24: Print: Next
For I = 1 To N
XX(I) = CN(I)
Next
GoSub 3080
For I = 1 To N
Z1(I) = 0.5 * RS(I)
Next
For I = 1 To N
XX(I) = CW(I)
Next
GoSub 3080
For I = 1 To N
Z2(I) = 0.25 * RS(I)
Next
For I = 1 To N
XX(I) = CM(I)
Next
GoSub 3080
For I = 1 To N
Z3(I) = 0.25 * RS(I)
Next
For I = 1 To N
XX(I) = MS(I)
Next
GoSub 3080
For I = 1 To N
Z5(I) = 0.3 * RS(I)
Next
For I = 1 To N
XX(I) = ES(I)
Next
GoSub 3080
For I = 1 To N
Z6(I) = 0.3 * RS(I)
Next
For I = 1 To N
XX(I) = LS(I)
Next
GoSub 3080
For I = 1 To N
Z7(I) = 0.4 * RS(I)
Next
FU$ = ""
For I = 1 To N
If CF(I) > 1 Then FU$ = "FOUND"
Next
If FU$ = "" Then GoTo 2050
For I = 1 To N
CF(I) = CF(I) * 0.988
Next
2050 For I = 1 To N
CL(I) = Z1(I) + Z2(I) + Z3(I)
SP(I) = (Z5(I) + Z6(I) + Z7(I)) * CF(I)
If SP(I) < 60 Then SP(I) = 60
Next
Print " "; DA$; " "; Left$(TK$, 20); " RACE #"; RN
If DF < 8 Then A1 = 0.6: A2 = 0.4
If DF >= 8 Then A1 = 0.5: A2 = 0.5
For I = 1 To N
FR(I) = A1 * SP(I) + A2 * CL(I)
Next
Print
2170 SW = 0
For I = 2 To N
If FR(I) <= FR(I - 1) Then GoTo 2240
T = FR(I): TH$ = NH$(I)
FR(I) = FR(I - 1): NH$(I) = NH$(I - 1)
FR(I - 1) = T: NH$(I - 1) = TH$
SW = 1
2240 Next
If SW = 1 Then GoTo 2170
Sum = 0
For I = 1 To N
ML(I) = (FR(I) * 0.0245) - 1.46
Sum = Sum + ML(I)
Next
TT = 0
For I = 1 To N
ML(I) = ML(I) / Sum
TT = TT + ML(I)
Next
AV = TT / N
For I = 1 To N
If ML(I) <= AV Then K = I: GoTo 2400
Next
2400 Sum = 0
For I = 1 To K - 1
Sum = Sum + ML(I)
Next
For I = 1 To K - 1
ML(I) = ML(I) / Sum * 0.8
Next
Sum = 0
For I = K To N
Sum = Sum + ML(I)
Next
For I = K To N
ML(I) = ML(I) / Sum * 0.2
Next
Print: Print "SELECTIONS": Print
2540 Print "HORSE", "RATING", "WIN ODDS"
For I = 1 To N
Print Left$(NH$(I), 14), Int(1000 * FR(I) + 0.5) / 1000, Int(((1 / ML(I)) - 1) * 100 + 0.5) / 100
Next
PRINT : INPUT "HIT `C' TO CONTINUE "; A$
Print: Print
If A$ <> "C" Then GoTo 2540
For I = 1 To N: K(I) = ML(I): Next
For J = 1 To N
K(J) = 0: P = 0
For I = 1 To N
P = P + K(I) * ML(J) / (1 - K(I))
Next
P(J) = ML(J) + P
K(J) = ML(J)
Next J
For J = 1 To N: L(J) = ML(J): K(J) = ML(J): Next
For J = 1 To N
K(J) = 0: P = 0: L(J) = 0
For I = 1 To N
If K(I) = 0 Then GoTo 2820
If K(I) <> 0 Then L(I) = 0
For Q = 1 To N
If L(Q) = 0 Then GoTo 2800
P = P + K(I) * (L(Q) / (1 - K(I))) * (ML(J) / (1 - (K(I) + L(Q))))
2800 Next Q
L(I) = ML(I)
2820 Next I
S(J) = P + P(J)
For Z = 1 To N: K(Z) = ML(Z): L(Z) = ML(Z): Next
Next J
2860 Print "PROBABILITIES": Print
Print " WIN PLACE SHOW"
Print
For I = 1 To N
Print Left$(NH$(I), 5); " "; Int(1000 * ML(I) + 0.5) / 1000; " "; Int(1000 * P(I) + 0.5) / 1000; " "; Int(1000 * S(I) + 0.5) / 1000
Next
PRINT : INPUT "HIT `C' TO CONTINUE "; A$
Print: Print
If A$ <> "C" Then GoTo 2860
Print: Print "WAGERING": Print
Print " WIN PLACE SHOW'"
Print
For I = 1 To N
W = 2 / ML(I): P = 2 / P(I): S = 2 / S(I)
Print Left$(NH$(I), 5); " "; Int(100 * W + 0.5) / 100; ""; Int(100 * P + 0.5) / 100; " "; Int(100 * S + 0.5) / 100
Next
Print
3030 INPUT "ANOTHER RACE? "; Z$
If Z$ <> "Y" And Z$ <> "N" Then Print B$: GoTo 3030
If Z$ = "N" Then End
N = 0
GoTo 130
3080 S = 1000000: L = 0: X = FRE(0): LP = 0: HP = 0
For I = 1 To N
If XX(I) <= S Then S = XX(I): LP = I
If XX(I) >= L Then L = XX(I): HP = I
Next
If S <> L Then GoTo 3180
For I = 1 To N
RS(I) = 100
Next
GoTo 3210
3180 For I = 1 To N
RS(I) = 60 + 40 * (XX(I) - XX(LP)) / (XX(HP) - XX(LP))
Next
3210 Return
3220 AA = 0
3230 If Len(A$) = 6 Then GoTo 3260
DD = Val(Left$(A$, 2))
MM$ = Mid$(A$, 3, 3): GoTo 3280
3260 DD = Val(Left$(A$, 1))
MM$ = Mid$(A$, 2, 3)
3280 YY = Val(Right$(A$, 2)) - 80
For I = 1 To 12
READ ZZ$
If ZZ$ = MM$ Then MM = I: RESTORE: GoTo 3350
Next
RESTORE
If MM = 0 Then FU$ = "Y": Return
3350 If AA = 0 Then R2 = (YY * 360) + (MM * 30) + DD
If AA = 0 Then A$ = DA$: AA = 1: GoTo 3230
If AA = 1 Then R1 = (YY * 360) + (MM * 30) + DD
Return
3390 DATA "JAN" "FEB" "MAR" "APR" "MAY" "JUN" "JUL" "AUG" "SEP" "OCT" "NOV" "DEC" "TEST"
3400 FU$ = ""
If Len(A$) <> 6 And Len(A$) <> 7 Then GoTo 3590
If Len(A$) = 6 Then GoTo 3530
For J = 1 To 2
If Asc(Mid$(A$, J, 1)) < 48 Or Asc(Mid$(A$, J, 1)) > 57 Then GoTo 3590
Next
If Val(Mid$(A$, 1, 2)) > 31 Then GoTo 3590
AA$ = Mid$(A$, 3, 3)
For J = 1 To 12
READ BB$
If BB$ = AA$ Then GoTo 3610
Next
GoTo 3590
3530 AA$ = Mid$(A$, 2, 3)
If Asc(Left$(A$, 1)) < 48 Or Asc(Left$(A$, 1)) > 57 Then GoTo 3590
For J = 1 To 12
READ BB$
If BB$ = AA$ Then GoTo 3610
Next
3590 Print B$
FU$ = "ERROR"
3610 RESTORE
Return
3630 FU$ = "": T1 = M: T2 = S: T3 = FS
If (M <> 999 And M > 2) Or (S <> 999 And S > 60) Or (FS <> 999 And FS > 4) Then Print B$: FU$ = "F": Return
If (F < 8) And (T1 > 1) And T1 <> 999 Then Print B$: FU$ = "F": Return
If T1 <> Int(T1) Or T2 <> Int(T2) Or T3 <> Int(T3) Then Print B$: FU$ = "F": Return
T1 = 0: T2 = 0: T3 = 0
Return
3690 FU$ = ""
For I = 1 To Len(A$)
If Asc(Mid$(A$, I, 1)) < 48 Or Asc(Mid$(A$, I, 1)) > 57 Then FU$ = "ERROR"
Next
Return

headhawg
11-16-2014, 07:40 PM
As this thread seemed to start out as a recommendation to get people to try programming, I would like to make a teaching point based on the above code -- never, never, never, NEVER use a goto command or anything like it. It just leads to spaghetti code. A good lesson for beginners would be to 1) try to follow what's happening in the code, 2) make a flowchart that diagrams the program, and 3) rewrite it in the language of your choice to see if you can.

highnote
11-16-2014, 07:51 PM
I agree -- especially given how easy it is to write code with today's software packages.

Dick Mitchell's code was probably written back in the 1980s when command line coding was the only option. Back then, without the goto statement you would have to repeat the code. This would probably make the program run faster, but also used up valuable memory.



As this thread seemed to start out as a recommendation to get people to try programming, I would like to make a teaching point based on the above code -- never, never, never, NEVER use a goto command or anything like it. It just leads to spaghetti code. A good lesson for beginners would be to 1) try to follow what's happening in the code, 2) make a flowchart that diagrams the program, and 3) rewrite it in the language of your choice to see if you can.

whodoyoulike
11-16-2014, 10:05 PM
Can someone refresh my memory. Didn't BASIC require a unique number for each line of code? Or, were the numbers omitted for for an easier presentation?

Thanks.

highnote
11-16-2014, 11:29 PM
Some, most or all early versions of BASIC required line numbers. Some newer versions do not require any line numbers.

Interestingly, some newer versions even let you use variables in place of line numbers.


Can someone refresh my memory. Didn't BASIC require a unique number for each line of code? Or, were the numbers omitted for for an easier presentation?

Thanks.

whodoyoulike
11-17-2014, 12:49 AM
Thanks, I used to dabble with BASIC before it was labeled Basica.

highnote
11-17-2014, 02:22 AM
Thanks, I used to dabble with BASIC before it was labeled Basica.

Line numbers were probably very necessary when programmers wrote in machine language.

Imagine trying to debug a program that consisted of only zeros and ones and no line numbers! :D

DJofSD
11-17-2014, 07:46 AM
Line numbers were probably very necessary when programmers wrote in machine language.

Imagine trying to debug a program that consisted of only zeros and ones and no line numbers! :D
There are no line numbers in any assembler. You have labels which are used for branches or points of reference.

No one writes in machine language.

highnote
11-17-2014, 12:05 PM
There are no line numbers in any assembler. You have labels which are used for branches or points of reference.

No one writes in machine language.

I wrote some programs in assembler back in the early 80s. I'm pretty sure line numbers were necessary, but it's been over 30 years ago, so maybe I'm mistaken.

The program consisted of code to mimic the sound of one note on a piano.

I never got it to work, so I never heard any sound, but I did see the future. :)

HUSKER55
11-17-2014, 03:54 PM
remember "switched on bach" from the early 70's.

One of the guys I went to school with knew one of the players. Supposedly they took one note at a time and ran it thru the song and then synthesized it together somehow. turned out slick.

headhawg
11-17-2014, 10:59 PM
Interestingly, some newer versions even let you use variables in place of line numbers.I've see a lot of versions of BASIC but I've not seen that. I'm trying to figure out why that would be useful. If you mean that you can use labels instead of numbers for procedures or subroutines then yes, but those are static entities. By definition, a variable could contain any legal value. If the value kept changing then how would the programmer know what part of the code is being executed?

highnote
11-18-2014, 12:19 AM
QBASIC allows you to use "line labels" in place of line numbers. Here is an example:

start:

For i = 1 to 10
if i = 3 then GOSUB linelabel
next i

linelabel: GOTO start

Here is a link to some more examples:

http://www.svatopluk.com/qbtutor/tut6.htm


I've see a lot of versions of BASIC but I've not seen that. I'm trying to figure out why that would be useful. If you mean that you can use labels instead of numbers for procedures or subroutines then yes, but those are static entities. By definition, a variable could contain any legal value. If the value kept changing then how would the programmer know what part of the code is being executed?

highnote
11-18-2014, 12:28 AM
remember "switched on bach" from the early 70's.

One of the guys I went to school with knew one of the players. Supposedly they took one note at a time and ran it thru the song and then synthesized it together somehow. turned out slick.


I definitely remember "Switched on Bach". I took a course in college in electronic music composition and we talked about that piece. The course was around 1982 so the "SOB" record was pretty old by then and was not taken as seriously by the class as it should have been because we were doing avant garde compositions a la Karlheinz Stockhausen. SOB was a landmark recording.

The woman who recorded it played one note at a time on a monophonic synthizer -- a Moog -- using a multitrack tape recorder. Then she rewound the tape and played the next set of notes on a different track. Then she repeated until all the parts were completed.

Well, I just looked it up on Wikipedia and I was partly right, but the real story is much more interesting than my memory:

http://en.wikipedia.org/wiki/Switched-On_Bach

http://en.wikipedia.org/wiki/Karlheinz_Stockhausen

HUSKER55
11-18-2014, 11:12 AM
AHH the good ole days. If I could go back to then with what I know now.......


never mind....I would have probably ended up in jail :lol: :lol:

HUSKER55
11-18-2014, 11:21 AM
I have a question for you guys and gals,

Went to our local tech school and talked with a guy and gal who were running the lab.

They both said java script dealt with web based data and web pages better than the others and they said it was closly related to "C" which had huge libraries of programs you could insert.

They didn't think it was any harder to learn than python. The girl pegged them equal.

Big advantage here is I have access to a text book and I can have a head start for the spring class.

I can take either but I have to register to get a spot or take my chances.


Thank you guys and gals!

DJofSD
11-18-2014, 11:43 AM
Do you understand that Java and Javascript are not the same thing?

HUSKER55
11-18-2014, 12:02 PM
yes, they seemed to think that javascript would be better for me.

their contention was that I can use notepad for the editor and that my browser will run the program.

DJofSD
11-18-2014, 12:11 PM
yes, they seemed to think that javascript would be better for me.

their contention was that I can use notepad for the editor and that my browser will run the program.
Yes.

Perfect.

Typically, when learning to program, or, a new language, the hands-on, down and dirty approach is to use a simple app called "Hello, world!" See: http://en.wikipedia.org/wiki/%22Hello,_world!%22_program

For Javascript, see: http://en.wikipedia.org/wiki/List_of_Hello_world_program_examples#J

DeltaLover
11-18-2014, 12:21 PM
I have a question for you guys and gals,

Went to our local tech school and talked with a guy and gal who were running the lab.

They both said java script dealt with web based data and web pages better than the others and they said it was closly related to "C" which had huge libraries of programs you could insert.

They didn't think it was any harder to learn than python. The girl pegged them equal.

Big advantage here is I have access to a text book and I can have a head start for the spring class.

I can take either but I have to register to get a spot or take my chances.

Thank you guys and gals!

Hask, you are a little confused here:

- Java Script is the language running within the browser.

- Java is a VM based language (similar to C# when it comes to the .NET camp) which indeed can be seen a descendant of the C/C++ family although with serious differences (garbage collection the main one).

Java Script is not a general purpose language and does not compete against python, ruby, java, C# or another server -side language. Anyone who told you that JS and python are “equal” probably does not know what he is talking about.

JS, is capable for very sophisticated programming (see jquery – dojo – note.js are just a few of the libraries that extend the functionality of JS using some of its advanced features like closures, prototype based inheritance, anonymous functions etc)..

As a general programming language, I would suggest to start with a dynamic one (python or ruby) AND a statically linked one (Java or C#) and leave JS for later...

HUSKER55
11-18-2014, 12:33 PM
thank you all for your input.

traynor
11-22-2014, 09:34 PM
Good resource for getting started: (entire tutorial is about 45 minutes)
http://www.newthinktank.com/2014/11/python-programming/



No prior knowledge is expected (or needed). Same site has intros for several different languages, if you are considering but undecided. Bucky is okay, but I prefer things that go a bit faster.

traynor
12-07-2014, 11:25 AM
The best Python intro I have found:
https://www.youtube.com/watch?v=NwyIuWK80gQ

The IPython Notebook is a serious game changer. It makes learning Python (and using Python) quick, easy, and simple. No dreary semesters doing busywork in community colleges, no long, boring lectures droning on for hours and hours in universities. If you have ever considered learning to program (in Python or any other language), you owe it to yourself to checkout IPython Notebook.

DeltaLover
12-07-2014, 11:31 AM
The best Python intro I have found:
https://www.youtube.com/watch?v=NwyIuWK80gQ

The IPython Notebook is a serious game changer. It makes learning Python (and using Python) quick, easy, and simple. No dreary semesters doing busywork in community colleges, no long, boring lectures droning on for hours and hours in universities. If you have ever considered learning to program (in Python or any other language), you owe it to yourself to checkout IPython Notebook.

Yes, ipython is very usefull and I use it every day. Also, you should consider pycharm which makes python development a joy.

traynor
12-07-2014, 11:43 AM
Yes, ipython is very usefull and I use it every day. Also, you should consider pycharm which makes python development a joy.

I use PyCharm, but I think the format of IPython Notebook is an even better choice for someone trying to learn Python basics. The option to download other notebooks and walk through the code to see how it works--and why--is a way better way to learn the basics than demos or lectures. Once the basics are assimilated, PyCharm is great. IPython Notebook makes that assimilation simple.

DeltaLover
12-07-2014, 12:17 PM
I use PyCharm, but I think the format of IPython Notebook is an even better choice for someone trying to learn Python basics. The option to download other notebooks and walk through the code to see how it works--and why--is a way better way to learn the basics than demos or lectures. Once the basics are assimilated, PyCharm is great. IPython Notebook makes that assimilation simple.

Both are needed... What I usually do, I open a terminal from phcharm and run ipython for there... Pycharm is great for debugging, works great with virtual machines and environments and has great support for source control, mysql, mongodb, pep8 etc.. ipython is great for quick tests and interactive mode...

traynor
12-07-2014, 01:22 PM
Both are needed... What I usually do, I open a terminal from phcharm and run ipython for there... Pycharm is great for debugging, works great with virtual machines and environments and has great support for source control, mysql, mongodb, pep8 etc.. ipython is great for quick tests and interactive mode...

I agree completely, as far as development is concerned. For someone just getting started, or trying to wean themselves from Microsoft (where "sophisticated computer user" means being able to point-and-click) it can all be a bit overwhelming. IPython Notebook is a near-painless way to get up and running and writing code in Python.

Consider it from the perspective of someone who really wants to learn basic programming, but is overwhelmed by the multitude of options, technologies, apps, IDEs, languages, etc. What they really need is a starting point--a relatively simple, easy-to-use introduction that will get them started coding, and learning the bare essentials. IPython Notebook in interactive mode (which enables a user to tweak pieces of existing code and immediately see the effect of the change on the output) is a great way to learn those bare essentials in almost no time.

Botha's Python intro (link above) shows just how easy it is to get started with IPython Notebook. Once those first few steps are taken, the rest is easy.

I think your open-source data mining project for handicapping is a great idea. I think the reason most were reluctant to get involved is what seems--to a confirmed Microsoft user--to be a complex mix of technologies and dependencies. Playing around with IPython Notebook for a couple of hours is likely to give them a whole new perspective.

raybo
12-07-2014, 05:26 PM
Also:
The very best introduction to programming, that I always suggest to novices, is the following book:

http://web.mit.edu/alexmv/6.S184/sicp.pdf

On YT you can also find a complete sequence of the related MIT lectures:
https://www.youtube.com/watch?v=2Op3QLzMgSY

Take your time, spend a few months going through this material and you will probably learn enough about programming computeres to assist you in your research.

In my opinion, it is way better to go through these material instead of just starting from Excel or Access that curiously appear to be so popular here in PA


2Op3QLzMgSY


Yeah, that's all as clear as mud, look at the blank stares of the students! :lol:

And, these are MIT students? Meaning they aren't dummies or they wouldn't be at MIT in the first place. :bang:

raybo
12-07-2014, 05:43 PM
Good advice, with one disagreement. I think a novice will get further faster with the CS106a from Stanford than the equivalent from MIT (which is great if you are already familiar with some of the basic information). Jumping straight into the fine points of sort algorithms might be a bit arcane to a newbie.

David Malans is far and away the best instructor, but the CS50 from Harvard places too much emphasis on the trendy web-related material (JavaScript, etc.) rather than the basic foundation novices need.

That basic foundation is covered elegantly, engagingly, and thoroughly by Mehran Sahami in CS106a, and expanded in CS106b. One thing it won't do--that so many dry, boring presentations like that from MIT manage to do--is completely turn off a novice from pursuing further studies in computer science.

The "talking heads" model of instruction is seriously deficient. It is also pervasive. One should be able to distinguish good instruction from bad instruction, benefit from the former and soundly reject the latter. I did a lot of research on the consortium attempting to fill the gaping deficiencies in computer science education (Monash, BlueJ, and others). The world needs more David Malans' and Mehran Sahami's. Fortunately, both Stanford and Harvard seem to realize fully that teaching is more than just talking and reading prepared notes.

For once, we agree! I know I'm extremely late to this thread, but the quoted post from you explains exactly why most people can't, and will never, learn to program, or to do statistics, or physics, or engineering, or anything else of that complexity. It's because the teachers of that stuff have progressed so far in their education and usage that they don't want to be bothered with how to add 1 and 1. They can't possibly teach it to a "novice", meaning someone who has absolutely no knowledge of the subject matter. And, this is why I dropped my physics 101 course, after one week, the same day of the first hour test, in which all except 1 of the 300+ students in that course failed the test (I made a 46 on that test, and I was in the top 10 of my graduating class in high school), at the Univ. of Texas. That instructor was exactly like the one in DL's MIT video.

raybo
12-07-2014, 09:16 PM
I found this book in the basement of my building. Is there anything in there that is still relevant, today?

http://i95.photobucket.com/albums/l142/thinlizzy21/ECF43D7E-19CD-480E-8E7D-5523DE1C19F6_zpsxx2zzaje.jpg (http://s95.photobucket.com/user/thinlizzy21/media/ECF43D7E-19CD-480E-8E7D-5523DE1C19F6_zpsxx2zzaje.jpg.html)

VBA is an easy way to automate Excel, Access, etc.. The ability to write VBA code makes Excel a very powerful data analysis tool, because you can spend much more time with other aspects, like wager structuring and wager amounts.

Much of this thread is just a pissing match between 2 or 3 people over what is going to be around in 20 years. Heck, I probably own't be around in 20 years, so why should I, or most others here care?

Bottom line is, use what works for you, whatever that is. Becoming a computer programmer will not make you a profitable player, but it might make your job so much easier that you can actually spend more time on things you didn't have time for before, and that might be the difference between losing and winning.

raybo
12-07-2014, 09:19 PM
I actually have a lot of experience working with spreadsheets for basic functions, primarily adding up rows and columns of numbers, but I never did any programming with them.

What exactly would a spreadsheet program do?

Anything you want them to do, you just need to know what you want them to do first.

raybo
12-07-2014, 09:23 PM
Still somewhat relevant, VBA probably hasn't changed much since then, VBA is essentially VB6 for Office apps. Excel has changed a bit, the ribbon UI, there's no longer a 65000 row limit but a million rows and things like that. A book like this which generally started with high marks typically sees a refresh with each new version of Excel and in so doing they will cover any new features and put new screenshots in it to capture the UI changes etc. I probably wouldn't want to get serious about Excel 2007 or newer and then want to spend a lot of time with a book that dated but I still have a lot on my shelf which is nearly as old.

VBA doesn't care what version of Excel you use. I have 2002 (and had other versions before that), and 2010 (2007 before that, and the same exact VBA macros work in all of them.

MJC922
12-08-2014, 06:50 AM
VBA doesn't care what version of Excel you use. I have 2002 (and had other versions before that), and 2010 (2007 before that, and the same exact VBA macros work in all of them.

Still if someone is going to get serious about learning Excel VBA it would be wise to obtain a newer edition of the book. The 2000 edition of the book may show examples that code around the 65000 row limit which no longer exists. Additionally some functions are now deprecated, even for a commonly used function like RANK Microsoft has indicated that RANK.AVG and RANK.EQ should be used moving forward. MS has been good about allowing for backward compatibility however it would be wise to use a newer edition of the book if for no other reason than to understand the current limitations of the software.

raybo
12-08-2014, 01:17 PM
Still if someone is going to get serious about learning Excel VBA it would be wise to obtain a newer edition of the book. The 2000 edition of the book may show examples that code around the 65000 row limit which no longer exists. Additionally some functions are now deprecated, even for a commonly used function like RANK Microsoft has indicated that RANK.AVG and RANK.EQ should be used moving forward. MS has been good about allowing for backward compatibility however it would be wise to use a newer edition of the book if for no other reason than to understand the current limitations of the software.

Of course, but that wasn't the question. He asked if there was anything in that book that is still relevant today. I would say that virtually 100% of the VBA used in 2000 can still be used today in the later versions. If he can get a foothold into VBA programming with that book, then he will know if it is worth it to continue, in which case I would then recommend his buying a recent book.

raybo
12-08-2014, 01:29 PM
The great thing about VB, VBA, Excel, Access, etc., is the enormity of free support on the internet. If you need help or don't understand something, all you have to do is Google it and you'll get your answer, or go to one of the hundreds of forums dedicated to anything Microsoft, and post a question. One doesn't have to be a VBA programmer to use VBA, others will write the code for you (and many will add the comments telling you exactly what the code does, so you learn even if you don't try to learn, simply by reading the code). It's almost like stealing, legally!

I use "MrExcel.com" all the time, and there are literally hundreds of sites like that online.

traynor
12-08-2014, 06:02 PM
http://ipython.org/notebook.html

For technical reasons that would be pointless to explain, a new user will find it easier/quicker/simpler to download Anaconda with the 2.7 version of Python rather than the "latest, greatest, spiffiest, most up-to-the-moment" version.

At:
http://continuum.io/downloads

choose the Python 2.7 version rather than the 3.4. That completely bypasses all the "multiple app dependency issues" that make Python and related apps seem so frightening to Windows users.

DJofSD
12-08-2014, 11:34 PM
http://www.wired.com/2014/12/obama-becomes-first-president-write-computer-program/

DJofSD
12-10-2014, 01:28 PM
http://oleb.net/blog/2014/12/programming-languages-mooc/

I just completed the University of Washington’s Programming Languages course on Coursera, and it was one of the best learning experiences I have ever had. This class is not your typical introduction to a particular language. Rather, instructor Dan Grossman aims to teach the fundamental concepts that underlie all programming languages, highlighting important (conceptual, not syntactical) similarities and differences between them.

https://www.coursera.org/course/proglang

traynor
12-15-2014, 10:53 AM
https://www.youtube.com/watch?v=iopDmRIJItk&list=PL646EB79A149EC727

Short, lucid, no experience necessary. Intended for pragmatic users--not career programmers. In short, how to get things done that you need to get done, without the typical "hooray for our side" nonsense typical of most "open-source" offerings. A refreshing emphasis on teaching the core basics necessary, rather than fostering an "us vs them" dichotomy that has no place in learning.

raybo
12-15-2014, 04:37 PM
https://www.youtube.com/watch?v=iopDmRIJItk&list=PL646EB79A149EC727

Short, lucid, no experience necessary. Intended for pragmatic users--not career programmers. In short, how to get things done that you need to get done, without the typical "hooray for our side" nonsense typical of most "open-source" offerings. A refreshing emphasis on teaching the core basics necessary, rather than fostering an "us vs them" dichotomy that has no place in learning.

Thanks Traynor, very good example of efficient, and understandable teaching. One doesn't need to be proficient in the "tool" to understand, basically, what the tool encompasses, and get an idea of what might be possible to accomplish by using the tool. Once that is understood, one knows whether or not they want to proceed to learn to use the tool, or not.

What I now understand is that, if I decide to pursue this, from what has now been explained to me, I know that chances are pretty good that I have the ability, with some study and work, to learn to program in Python. That's more than I knew in the past.

traynor
12-16-2014, 12:26 AM
https://www.youtube.com/watch?v=b7z1RybudG4

From the ground up. No previous knowledge assumed or required. Take special note of the use of the IPython Notebook. As I mentioned above, it is a game changer. So is Greg Wilson and the Software Carpentry project.

Best suggestion for those interested in applying basic programming skills to handicapping horse races (at this point): Watch the five (short) videos at the link above, download Anaconda 3 for Python 2.7 and use the Spyder IDE (included with Anaconda, and it already has the IPython Notebook).

Anaconda has every analysis and data mining tool you are likely to need for quite awhile. At least until you learn enough to make those greedy whales work a whole lot harder for their money, to make up for that which you are siphoning off.

There is also a decent (if a bit slow) series of tutorials on "Learning Python with Spyder" on YouTube.

traynor
12-16-2014, 01:49 AM
My mistake. Wilson is using IPython, not IPython Notebook. IPython Notebook has way more functionality, while being as easy to use as the IPython in the videos. Another error--there are more than five videos, but they are all short and easily assimilated. No profound, ponderous pontification by hard-core academics intent on demonstrating their "importance" and "elevated status" to hapless students (rather than teaching).

traynor
12-16-2014, 01:45 PM
i think it is important to understand the "why" as well as the "how." Virtually every "handicapping application" publicly available (meaning someone offers it to you, for free or for a fee, or "free" because they get subscription kickbacks from data providers, or whatever) is based on crunching the same set of numbers (Equibase for US/Canadian races), and reflects the bias(es) of the developer(s).

That means that you have to accept the "wisdom" of the developer as superior to your own. If you have an idea you want to try, or test, you can ONLY do it within the constraints imposed by the developer, or by the data providers in conjunction with the developers. That may often dilute your idea(s) so much that they produce skewed results, no results, or poor results. There may be workarounds in some applications, but they generally take more skill to pry out than it would take to code a simple app to test your idea(s) on your own.

The idea that you need a computer science degre and a million race database is utter nonsense. Initial testing takes only a handful of races at your local track, and may even be worth entering data by hand for those races. No data subscriptions needed. No big investment of time or resources needed.

An example. When I was in graduate school, a group of students formed a "handicapping group." One of the most useful ideas was "what happens if we ignore time completely?" It is not a new idea--Sartin and others have advocated it at various times under various labels. In essence, actual race times are ignored--all "times" are entered as defaults, and only the running positions and beaten lengths are considered as meaningful.

It took very little effort to code a simplistic app in the TI-84 calculators that all students were required to have. It took very little effort to pick "a good recent race for comparison" for each horse, and 3-4 seconds to enter the data for that horse into the TI-84. Contender selection was simple--take the top 5 morning line, or--if less adventurous--the top 4. No rocket science, no agonizing over woulda coulda shoulda. And it picked a LOT of winners.

A few more lines of code, and it generated "pace ratings" based primarily on each horse's performance, rather than arbitrarily as a factor of race times. As much as the concept might make "pace handicappers" or "speed handicappers" cringe, it worked just about as well as the number crunchers using data downloads. Additionally, it was not restricted to Equibase data--it could be used on "foreign" races just as easily, and often with better results. Not every race at every track every day--but more than enough to be quite rewarding.

So what's the point? An idea (one of many, BTW) was implemented with a few lines of code, tested on a handful of races, and the results were promising enough to devote more time and effort to improving it. You never know until you try whether one of those ideas you have been kicking around in the back of your mind for years might be the keys to the candy strore. It makes no difference whatsoever how it performs "in the long run" on a million race database of old races from tracks you have no interest in whatsoever. It only matters how it performs on the races you actually bet on.

traynor
12-21-2014, 05:05 PM
https://www.youtube.com/watch?v=UPPLxWurcAc&index=1&list=PLB376DFF0A2C6E50B

This is actually the set of video tutorials to go with an entry level computer science class at a community college. It starts at the start, assumes no previous experience, and builds knowledge through a sequence of relatively brief videos (5 to 15-or-so minutes each) chunked down to express concepts in coherent blocks.

No graduate degree or higher math needed (or expected). While perhaps not as engaging as a David Malan, this person is a teacher (not just a "lecturer" or "presenter").

In particular, if you have tried to learn basic programming and given up in disgust after a "less than pleasant learning experience," this series (or the Software Carpentry series linked above) are pretty much guaranteed to get you up and writing code in a VERY short period of time. As in a couple of hours, not months, semesters, or years.

HUSKER55
12-21-2014, 05:36 PM
I started learning python and I hired a tutor. She took off to be with family for the holidays, which is fine, but taught me how to write pseudo code for my program so when we start writing code our thoughts are organized. I told her I would have it done by the time she gets back.

#1: being a typical male and trying to organize what I do has forced me to take up religion.....(ok..ok, drinking) :D unless drinking is a religion, in which case I am up for sainthood.
#2: nothing burns like thinking you are correct only to find out you are not.
#3: I made notes but I can't remember what the encryption was for
#4: I used 16 pt arial because it is easier on the eyes to read. however, after 14 pages I don't think I have everything covered and to add insult to injury half of it I can't use because of point#3.

the term Bah-humbug has given me a new meaning



Merry Christmas to everyone!!!

raybo
12-21-2014, 06:30 PM
https://www.youtube.com/watch?v=UPPLxWurcAc&index=1&list=PLB376DFF0A2C6E50B

This is actually the set of video tutorials to go with an entry level computer science class at a community college. It starts at the start, assumes no previous experience, and builds knowledge through a sequence of relatively brief videos (5 to 15-or-so minutes each) chunked down to express concepts in coherent blocks.

No graduate degree or higher math needed (or expected). While perhaps not as engaging as a David Malan, this person is a teacher (not just a "lecturer" or "presenter").

In particular, if you have tried to learn basic programming and given up in disgust after a "less than pleasant learning experience," this series (or the Software Carpentry series linked above) are pretty much guaranteed to get you up and writing code in a VERY short period of time. As in a couple of hours, not months, semesters, or years.

Wow! The intro for binary code portions brought back lots of memories from the early '70s. When I joined the Air Force, in 1970, I chose the "Electronic Technician" career field (because I thought electronics would be cool - LOL). Well, the Air Force said "Ok, we need electronic techs for the A7-D aircraft avionics field, so airman Baker will go to Lowry AFB, Denver, Co. and go to school for avionics on the A7-D.", that ultimately meant that I would be working on airborne computers for navigation, weapons control and delivery, among other things. I soon learned that computers used 1s and 0s for their operations, and of course, when I was sent to tech school, one of the first thing we learned was binary code. Later we learned that "punched tape" was used to program these computers. The punched holes in the tape represented 1s and 0s, and when passed over a light reader, passed those 1s and 0s into the computer as a program consisting of 1s and 0s that formed bytes and words.

This instructor explains that stuff much better than my tech school instructors did. Sure wish that guy had been around way back then!

traynor
12-21-2014, 07:46 PM
I started learning python and I hired a tutor. She took off to be with family for the holidays, which is fine, but taught me how to write pseudo code for my program so when we start writing code our thoughts are organized. I told her I would have it done by the time she gets back.

#1: being a typical male and trying to organize what I do has forced me to take up religion.....(ok..ok, drinking) :D unless drinking is a religion, in which case I am up for sainthood.
#2: nothing burns like thinking you are correct only to find out you are not.
#3: I made notes but I can't remember what the encryption was for
#4: I used 16 pt arial because it is easier on the eyes to read. however, after 14 pages I don't think I have everything covered and to add insult to injury half of it I can't use because of point#3.

the term Bah-humbug has given me a new meaning



Merry Christmas to everyone!!!

Programming is way easier if you decide what you want coming out first, then think about what has to go in to generate that output.

raybo
12-21-2014, 07:56 PM
Programming is way easier if you decide what you want coming out first, then think about what has to go in to generate that output.

That's true of lots of things we need to design and create. Example: if we are going to build a house, we don't just start pouring concrete or nailing 2x4s together. We first need to know what the house should look like when it's finished (unless we don't care what the exterior of the house will look like of course), and work our way backward from there until we finally end up with a complete set of blueprints for building the house, otherwise we could end up with a dog house instead of a mansion, or vice versa.

HUSKER55
12-21-2014, 10:04 PM
Programming is way easier if you decide what you want coming out first, then think about what has to go in to generate that output.


thank you traynor. I appreciate your input!

TonyMLake
12-24-2014, 10:03 PM
I think if the OP wants to learn basic programming that has a path to the future for his own apps, there are only three paths of the most generalized useful value. I'm confident I have the experience, age and skills comparable to anyone here, and I humbly suggest those three paths are these:

Learn PHP+MySQL:
It's a web based package that runs on almost all servers in use today, including IIS!

Learn C#:
C# can do anything Windows, and it's common. With an ASP focus, he can do much of what he could do with PHP And SQL on the web, plus, do even more than that on Desktop versions of windows.

Learn Java:
It runs on any platform.


I left out lower level languages like c and assembler, if anyone who knows anything about programming wants to argue the point for c, I'll just concede (Yeah, learning c might just be the best thing!!). If you don't know why I left out assembler, you're an egghead ;^)

My 2 cents.

headhawg
12-24-2014, 11:55 PM
I've posted this before -- beginners should not bother with any OOP languages. And to even mention C in the concept of basic programming skills is just folly. The people here with experience are so far removed from being a beginner that they forgot what it's like to be one. This is one of the reasons that some SMEs can't teach s**t.

traynor
12-25-2014, 11:40 AM
I've posted this before -- beginners should not bother with any OOP languages. And to even mention C in the concept of basic programming skills is just folly. The people here with experience are so far removed from being a beginner that they forgot what it's like to be one. This is one of the reasons that some SMEs can't teach s**t.

I strongly disagree. 2014, planet Earth, by far the best "first language for a novice" is Python, with no close second. There are incredible (easy-to-understand, clear, readily-available on YouTube) tutorials that can get a novice up and coding in a couple of hours. And Python is strongly OOP.

I am NOT an "open-source advocate." Most of my applications are written in Visual Basic and Java. If anyone is unclear about which programming language is best to learn basic programming, I strongly encourage he or she to watch:
https://www.youtube.com/watch?v=FtKO619O5g0

The abject failure of most "programming instruction" to teach anything except an aversion to programming is a given for anyone who is not already a programmer.

The whys and wherefores are many and diverse, but have been a source of great consternation to those who truly want to teach programming to novices (rather than to those who hack in four different languages already for amusement).

If you can't learn enough of the basics to start programming in a weekend, you need a better teacher. Or a better language. Or both. In a weekend of watching Kent Lee and Software Carpentry Python tutorials, you should be able to comfortably write code at least equivalent to that written by college students after a full semester of Java--and, unlike the hapless college student--actually understand what you are doing when you do it.

OOP is one of the simplest, easiest, most sensible ways to think about programming--especially if your "introduction" to OOP is from a 10-15 minute Kent Lee video, rather than lengthy, ponderous, pontificating BS by college professors (and others) more highly motivated to make their trivial little skill set seem impressive than to convey information.

traynor
12-25-2014, 11:44 AM
I think if the OP wants to learn basic programming that has a path to the future for his own apps, there are only three paths of the most generalized useful value. I'm confident I have the experience, age and skills comparable to anyone here, and I humbly suggest those three paths are these:

Learn PHP+MySQL:
It's a web based package that runs on almost all servers in use today, including IIS!

Learn C#:
C# can do anything Windows, and it's common. With an ASP focus, he can do much of what he could do with PHP And SQL on the web, plus, do even more than that on Desktop versions of windows.

Learn Java:
It runs on any platform.


I left out lower level languages like c and assembler, if anyone who knows anything about programming wants to argue the point for c, I'll just concede (Yeah, learning c might just be the best thing!!). If you don't know why I left out assembler, you're an egghead ;^)

My 2 cents.

Same response (and recommendations) as in previous post.

DJofSD
12-25-2014, 11:48 AM
So, I guess that any one that learned to program pre-Python is just a hacker.

traynor
12-25-2014, 11:53 AM
So, I guess that any one that learned to program pre-Python is just a hacker.

Not at all. But if you already know how to program, you are not a novice.

traynor
12-25-2014, 12:04 PM
"Simple BlueJ has a deliberately smaller and simpler interface than professional environments like NetBeans or Eclipse. This allows beginners to get started more quickly, and without being overwhelmed.

Designed for teaching BlueJ is deliberately designed with good pedagogy in mind. There is a popular textbook designed for teaching introductory university/college courses with BlueJ, and a site full of teaching resources."
http://www.bluej.org/about.html

If you think learning Java (or C#) as a first language is reasonable, I suggest you poke around the BlueJ site awhile. Take special note of the fact that BlueJ was the response developed by a university consortium to combat the horrendous dropout rate (that some would equate with "failure") in college and university computer science classes.

You might even like BlueJ--and decide to learn Java. Good luck.

headhawg
12-25-2014, 12:17 PM
...OOP is one of the simplest, easiest, most sensible ways to think about programming...One of the things that I tell people who are less savvy with computers is that computers are stupid -- they don't do what you want them to do, they do what you tell them to do. The core of programming is not syntax but logic. You're telling me that transferring the logic from a flowchart/pseudocode is easier in OOP than in a procedural language? I completely disagree. This thread has been way more about languages than logic which shouldn't really be the focus for a beginner. The language doesn't matter if the person can't grasp the basic concepts of loops, variables, and conditional logic.

DJofSD
12-25-2014, 12:24 PM
One of the things that I tell people who are less savvy with computers is that computers are stupid -- they don't do what you want them to do, they do what you tell them to do. The core of programming is not syntax but logic. You're telling me that transferring the logic from a flowchart/pseudocode is easier in OOP than in a procedural language? I completely disagree. This thread has been way more about languages than logic which shouldn't really be the focus for a beginner. The language doesn't matter if the person can't grasp the basic concepts of loops, variables, and conditional logic.
I would agree to a very large extent.

I view programming and the skills necessary to do it well as a layered model. If you don't grasp the concepts of a previous layer, you're either lost or doing it incorrectly.

raybo
12-25-2014, 01:03 PM
While a procedural language, if taught understandably, is more "logical" for the novice, object oriented language is much more efficient and powerful. If I actually do start programming in Python, I know one thing for sure, I will have just as many "comment" lines as code lines. I'm so used to using actual ranges in my Excel VBA and formulas, switching to named ranges in Excel or objects in VBA causes me to lose track of what is gong on, and I spend more time backtracking to figure out what the formula or code is referring to than I do actually writing code or formulas. It's a vicious circle to me.

DJofSD
12-25-2014, 01:25 PM
Excel, Python, BASIC, etc., etc., etc., ad nauseum are ways to hide the gory details. I like sausage so I choose to ignore how it's actually made.

At the heart of it, the modern computer is dumb and only does one thing at a time. Sure, you can write fantastic apps without knowing a damn thing about procedural languages and how the hardware works and therefore dictates how software functions. But if you are going to go deep down the rabbit hole, you'd better have some understanding of the basics.

raybo
12-25-2014, 02:31 PM
http://oleb.net/blog/2014/12/programming-languages-mooc/



https://www.coursera.org/course/proglang

This recommendation appears to be "out of scope", regarding this thread, which is directed at "novice" programmers, meaning "no prior programming experience at all". Also, it is a "real" college course that one must attend in person. I doubt anyone here, interested in learning to program, from the beginning, would be able to utilize any of this. Keep in mind that most people reading this thread (because they do not know how to program but might want to learn enough to help them with their racing endeavors, not just to learn to program) are middle aged or older (probably many more in the latter age group) and don't want to, or don't have the time or resources to, go to college. This forum is primarily about horse racing, nothing more or less.

Recommended Background
The course assumes students are familiar with programming covered by most introductory courses -- this is not an introductory programming course. Conversely, it is also not a particularly advanced course -- a couple good prior programming courses should be enough. Students should be comfortable with variables, conditionals, arrays, linked lists, stacks, and recursion (though recursion will be reviewed and expanded upon), and the difference between an interface and an implementation. Students should be eager to write programs in languages new to them. Later parts of the course analyze basic object-oriented concepts and contrast them with those of other languages, so familiarity with Java or a closely related language (e.g., C#) is helpful, but not required for homework assignments.

DJofSD
12-25-2014, 03:08 PM
This recommendation appears to be "out of scope", regarding this thread, which is directed at "novice" programmers, meaning "no prior programming experience at all". Also, it is a "real" college course that one must attend in person. I doubt anyone here, interested in learning to program, from the beginning, would be able to utilize any of this. Keep in mind that most people reading this thread (because they do not know how to program but might want to learn enough to help them with their racing endeavors, not just to learn to program) are middle aged or older (probably many more in the latter age group) and don't want to, or don't have the time or resources to, go to college. This forum is primarily about horse racing, nothing more or less.
Perhaps. As I tell my son, a man's reach should exceed his grasp.

And then there's this timely missive: http://java.dzone.com/articles/programmer-knowledge

Happy Holidays

raybo
12-25-2014, 03:21 PM
Perhaps. As I tell my son, a man's reach should exceed his grasp.

And then there's this timely missive: http://java.dzone.com/articles/programmer-knowledge

Happy Holidays

Yes, but I'm not, nor any others here, your son. Many of us are in our 60s, 70s, 80s, and probably a few in their 90s. Most of us will want to import racing data files, manipulate that data, and create reports or views. We don't want to become academics or look for a new job in the IT industry, we simple don't have the time, the desire, or the need. We are not interested in "programming" per se, we are interested in automation of things we already do in our horse player careers.

traynor
12-25-2014, 06:34 PM
One of the things that I tell people who are less savvy with computers is that computers are stupid -- they don't do what you want them to do, they do what you tell them to do. The core of programming is not syntax but logic. You're telling me that transferring the logic from a flowchart/pseudocode is easier in OOP than in a procedural language? I completely disagree. This thread has been way more about languages than logic which shouldn't really be the focus for a beginner. The language doesn't matter if the person can't grasp the basic concepts of loops, variables, and conditional logic.

Absolutely. It is only those so entrenched in "procedural" processes that they fail to understand OOP that have difficulties. It is much like handicapping horse races--a fairly simple endeavor made complex (or seemingly complex) by those who don't really understand it.

I agree with the second statement bolded above. I think it is way easier to grasp the basic concepts of loops, variables, and conditional logic in Python than (currently) any other way--including Stanford's Karel the Robot. Missing (or misunderstood) is that Python does not "require" anyone to understand OOP to start "coding loops, variables, and conditional logic." One can start writing such after a few minutes (not days, weeks, months, or semesters) of competent instruction. OOP is a perfectly natural extension of that start--not a "completely new learning paradigm."

traynor
12-25-2014, 09:56 PM
And on the topic of going deep down the rabbit hole:
https://www.youtube.com/watch?v=R_raXzIRgsA

traynor
12-26-2014, 03:09 AM
A brief (about 15 minutes) and very lucid overview of the differences between various programming languages, and between procedural programming, functional programming, and OOP. Not technical.
https://www.youtube.com/watch?v=Ps8jOj7diA0&spfreload=10

DJofSD
02-11-2015, 01:41 PM
http://www.surveygizmo.com/s3/1883619/Developer-Personality-Test

Magister Ludi
02-11-2015, 04:53 PM
Universal systems language for mission-critical software development:

http://www.htius.com/Articles/Inside_DBTF.htm

Well worth the five figures/seat cost!