# I want to start coding



## Grell (Jun 29, 2012)

Hey, I was wondering, how did you guys start off coding?  I myself used to do a little C programming years back but have drifted away from it.  I tried to get back into programming (I can't tell you how many Python books I bought, to no avail) but just can't seem to stick with it which is a shame because I used to really enjoy it back in the day, the excitement of finally working out all the bugs and having a functional program cannot be understated.  Anyway I was wondering what the best course of action to take would be.  I want to study computers, mainly *nix and programming, in college and will be soon.  So thanks in advance for any pointers.


----------



## drhowarddrfine (Jun 30, 2012)

It always helps to have a purpose and motivation. I have trouble learning anything new if I don't have something useful to apply it to. For me, even if I make something up, I can't get into it unless I or someone else will really use it.

For example, there were some new techniques and languages I wanted to try for the web. I dreamed up an imaginary web site and started tinkering with it. Months went by. I struggled with it. Progress was very slow. Then my son needed a web site using those same techniques. I put the whole thing together using all those new things in four weeks.

So the motivation is that someone would actually use the thing along with the praise and adulation you get.


----------



## throAU (Jun 30, 2012)

I'd download GNUstep, play with objective C and GORM.

This will give you a half decent background to start developing IOS or Mac apps, and also give you a background to help with Etoile development.


But yes, as above - find a problem to solve, and then work towards it. *T*rying to learn to code without an itch to scratch is pretty difficult.


----------



## roddierod (Jul 2, 2012)

To add to drhowarddrfine's response: another thing is program something that you can use or is related to something you like. For example, I collect records/CDs and I created an app for myself to keep track of my records. I used that to learn WxPython a few years ago. To learn Django and PostgreSQL I created a web application for my wife to store her recipes.


----------



## neilms (Jul 2, 2012)

Like you *I* started trying to learn *C* but after a few months stopped. I then started trying C++ and bought loads of books - but same problem, *I* stopped and started trying to work all the exercises in a book. The thing is that the answer was given by the inventor of C++, Stroustrup wrote that the best way to learn C++ was to use it. I did not understand fully what this meant until very recently.

In simple terms, you will find it hard to learn to program without trying to solve a real problem. Sure, you need to know the basic syntax but to understand it - you must apply it in the context of a real problem that strech your ability. Then you can go to the books for reference. At the end of your work, you will be surprised what you have learned not only about coding, but the system generally.

Recently *I* decided to put together a simple game - which has been done before by many others. But I wanted to try it myself and this has helped me a lot even though *I* have not finished as yet.  

hth


----------



## TheDreamer (Jul 6, 2012)

Well, I started out my programming career by finding a program that I used regularly, that was incomplete and had bugs. So, I fixed various bugs and made various enhancements to it.  (A 4.x version of Directory Util for the Amiga, someone at a users group meeting referred to my program as 'duV'...and that became its name.)

I also spent some time rewriting other programs in other programming languages.  Like in high school for extra credit, I translated a BASIC programming class into a PASCAL programming class.  The following semester the teacher taught PASCAL programming.  I then started translating the same programming class into C, while I was learning it myself.  I hear the year after I graduated high school, they were offering C programming classes.  In college, for no useful reason, I spent time translating a collection of FORTRAN subroutines into C (and RPL).

But, in my first job, I ended up being the guy to translate FORTRAN programs into C.  The company I was with had decided that Unix and C (and X/Motif) would be the direction to go in with its Engineering software.  But, the company had started out with time bought on a Honeywell mainframe and FORTRAN, and early versions of the software were FORTRAN on x86.  Plus research codes being developed at various Universities were FORTRAN.  Reimplementing our algorithms in C was one thing, but not so easy when we needed to integrated algorithms written in FORTRAN by other entities.  And, this was well before ADA was the required programming language with the DoD.

Though I got to do a DoD project where I had C++ classes generated from the ADA design tool, and I filled large portions of the member functions from the older C program...and newer algorithms that started out life on bar napkins.

Later in my programming career.  I worked fixing bugs in other people's programs, including some written in languages that I was learning as I was fixing.  Of course, new product development is much more lucrative.  And, companies go through phases where they need to streamline their new product development....so software maintenance types get the door.

First two jobs, I started primarily as a software developer, but gradually doing more and more system administration.  Second job, I was officially laid off as a software engineer, but kept on for a while long as a full-time system administrator.  And, now that's my current job.

But, I still find myself occasionally poking around inside other people's codes. 

The Dreamer


----------



## Anonymous (Jul 29, 2012)

*Which Programming Language?*

I have about 30 QuickBasic programs, with the QuickPak Professional extensions, that I wrote about 15 years ago.  I still use the same tools to write new programs.  These programs require MS-DOS.  So you see the problem.  MS-DOS will become unavailable as soon as my last remaining computer with Windows XP goes dead.  These programs are fairly sophisticated, and use bitmapped graphics.  I use them for my investing, so they are important and valuable.

I would like to translate them to something modern, with "staying power", so I don't have to do another translation in the next 10 to 20 years.  What programming language should I learn to accomplish this?  I can probably learn most anything, as I have experience in everything from assembly language to PASCAL.  But I want to spend as little time on this project as possible, so something similar to QuickBasic would be nice.

Or any other constructive advice would be appreciated.

Thanks!


----------



## qsecofr (Jul 29, 2012)

What are some of the functional aspects of the investing programs do you want to port?  It might make for an easier transition to port to another language offering similar functional elements, rather than port to a syntactically similar language in which you might be reinventing the wheel.


----------



## plamaiziere (Jul 29, 2012)

AdviceNeeded said:
			
		

> But I want to spend as little time on this project as possible, so something similar to QuickBasic would be nice.



There are several BASIC interpreters in the ports tree (ports/lang).

Regards.


----------



## xibo (Jul 29, 2012)

It's almost impossible to correctly predict whether or not a language will still be frequently used in 10-30 years from now.

<troll>Although I do hope Java will be dead by then.</troll>


----------



## kalle97 (Jul 29, 2012)

Lua is easy to learn, good documentation on the net as well as some great books, I really recomend WROX's lua book.


----------



## zhoopin (Jul 29, 2012)

The Roadmap (Beginner to Advanced!)
that I was/am following - Not Precisely, but Idealistically - That's works.

_Abbreviation
CS: Computer science
AI: Artificial Intelligence
EEE: Electrical and Electronics Engineering_


OS - FreeBSD Handbook & FAQ
Basic FreeBSD tools such as awk, sed, ...
SHELL Programming - SH shell
C Language
Math
Calculus
Differential Equation

perl Language
Internet, Web and Markup Language
HTML5
Apache
PHP
MySQL

Math
Engineering Mathematics
Discrete Mathematics

CS
Algorithm
Data Structure

OS - FreeBSD Developers' Handbook
XML
SQLite
CS
Database 
Data mining

Math
Numerical Analysis

Computer Networks
C++
Software Engineering
SE (Software Engineering)
OOP (Object-oriented Programming)
XP (Extreme Programming)

CS
Parallel computing
Distributed computing

AI
AI (Artificial Intelligence)
Expert system
NN (Neural Network)

EEE
Computer Architecture
Assembly Language

Operating Systems Architecture
FreeBSD Architecture Handbook
EEE
General Physics (Electromagnetism)
Circuits (Electronics & Logic)
Microprocessors

.
.
:x


----------



## mwatkins (Jul 29, 2012)

AdviceNeeded said:
			
		

> These programs require MS-DOS.  So you see the problem.  MS-DOS will become unavailable as soon as my last remaining computer with Windows XP goes dead.



Have you explored any of the MS-DOS compatible operating systems? Something like FreeDOS, perhaps running in a VirtualBox environment (on Windows or FreeBSD or ...) could allow you to delay porting your application.

As far choosing a language with staying power to replace the Basic you are used to, I'd suggest trying on Python for size to see if it fits your brain.

While it certainly isn't a twin of Basic, compared to some other popular languages Python might feel closer to what you are used to but also offer much more power when you are ready for it. Python is small (syntactically) and as a result many find it easy to pick up. The Python community is large and self-sustaining - the language isn't going to disappear. 

I'm aware of some investment houses which use Python internally (regular postings on the Python jobs page at http://python.org/ ) but then again lots of languages get used in big firms.

Two investment related link collections:
http://vermeulen.ca/python-stock-market.html
http://stackoverflow.com/questions/4406481/technical-analysis-in-python

You'll find plenty of third party package support for your needs (NumPy / SciPy, matplotlib, Python wrappers for Google Chart,and many others). SQLAlchemy offers an object relational mapper to SQL database engines; ZODB or Durus are two Python object databases worth checking out too.

Sometimes overlooked is the power of an interactive prompt. I have data for analysis and performance tracking maintained in a Python object database (my preference but my investment analysis system easily could have been developed using a SQL database) and often I'll fire up an interactive Python prompt to execute short commands or "queries" against the data. I source data from some free web sources but also rely on subscription real time and end of day providers.


----------



## UNIXgod (Jul 29, 2012)

Ruby is a very nice and elegant language which follows the UNIX paradigm( awk, sed, grep, c and shell). It's a completely object oriented programming language with regular expressions built in. It's also a very fun language to work with.

I could see it being a very good language to start with. Much the way we had BASIC as kids; or people use python now.


----------



## mwatkins (Jul 30, 2012)

Either Ruby or Python would be good first choices to look at. Both have vibrant lasting communities around them. Invariably one or the other will fit one's brain a little better - go with whichever feels good.


----------



## UNIXgod (Jul 30, 2012)

mwatkins said:
			
		

> Either Ruby or Python would be good first choices to look at. Both have vibrant lasting communities around them. Invariably one or the other will fit one's brain a little better - go with whichever feels good.



This is the best advice!


----------



## Anonymous (Jul 31, 2012)

Thanks to all of you who replied.  You have saved me a bunch of time.  Here is my to-do list based on your advice.

1.  Look into FreeDOS or other MS-DOS compatible opsys., per MWatkins' suggestion.  That would be ideal - no rewriting at all!!

2.  Search (ports/lang) for BASIC interpreters that would run independently of MS-DOS, using my current code.  I suspect this will not work because my main program uses graphics pages that are not supported in WINDOWS.  Or at least that's my impression.  But I'll look at this approach since it might allow me to keep most of my current code and just rework the graphics.

3.  Explore Python (most votes), Ruby and Lua as alternatives to BASIC.

4.  Look into the other resources mentioned by MWatkins.

Again, thanks much!


----------



## UNIXgod (Aug 1, 2012)

I ran across the old Norvig post on beginning programming. It's a very good read:

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


----------



## Switch2BSD (Apr 9, 2021)

Vote up for Python


----------



## SirDice (Apr 9, 2021)

Switch2BSD please stop necroposting 10 year old threads.


----------



## astyle (May 5, 2021)

SirDice in which case, it might make sense to close them.


----------



## ShelLuser (May 5, 2021)

astyle said:


> SirDice in which case, it might make sense to close them.


Disagreed, sometimes people have actually usefull (updated) info to add. This otoh is IMO plain out spam.


----------



## astyle (May 5, 2021)

ShelLuser said:


> Disagreed, sometimes people have actually usefull (updated) info to add. This otoh is IMO plain out spam.


Hey... what would you think is a good amount of time to wait before closing a thread? It may make more sense to start a new thread and reference an old, closed thread than to necropost to a 10-year old thread. Of course, this depends on the topic, and would be the call of the moderator. But if the mod doesn't want people posting to a very old thread, they can either close it by hand or have a daemon that closes threads based on age of last post.


----------



## SirDice (May 6, 2021)

Threads are only closed when they spiral out of control. A lot of times new users just don't pay attention to the dates. We also get spammers that drag up old threads in order to up their post count (and get past the moderation queue).


----------

