I want to get into programming
I have no background in programming but after a fruitless search for a software program i decided to write it myself.
==what i need to do==
write a program which will run sort of like most games do today
-I want to make a 2D graphic interface, and there will be hefty amounts of physics, object editing, pre-scripted simulation and the possibility of editing objects and rules as the program is running
Eventually i would like to make a 3d version but that seems like it would be very hard.
Could I get some direction with this? What program language would be best to use? is it an impossible goal to do this with no experience? I appreciate any help I cannot figure out what it is you are trying to do. You say you want a 2D graphic interface but you don't say what to. You say you will utilize a "hefty" amount of objects and physics but you don't say why.
Lack of experience isn't going to kill this project, lack of a spec will. Learning to program is like any other skill, put the time and effort into it and you can learn, but if you have no idea what you are trying to do you'll get no where.
i have a very specific idea in mind, but im not going to divulge it to the world. i described what i thought was relevant to one of my questions: which programming language would be best/easiest to write my concept in.
You claim to have no background in programming. Then how can you know what is "relevant to one of my questions: which programming language would be best/easiest to write my concept in"?
Programmers (I'm generalizing here) don't like to be presented with XY problems[1]. What you've done here is decided that the best solution to your problem, X (which you haven't described to us) is Y (learn a programming language), so you're asking us about what programming language to learn.
The reason we don't like these sorts of questions is because there could be a solution to X, that is more effective, or much easier to explain than Y. You're not going to get helpful answers to your question "what programming language should I learn" because we absolutely don't have enough information to decide if learning to program is your best bet. Let alone how you should go about learning to program.
It's like you're asking us "I have a great idea for how to win at racecars, it involves taking apart the engine. What socket set should I buy?" Sure, there are better and worse socket sets, but that's not really the relevant question at this point.
All of that being said: Learn Python.
http://bit.ly/UHentV But i would want this program to operate on two levels of complexity. I would want to have fun and experiment with familiar concepts, like gravity, wind, light, ect. but in an easy and accessible way. However i would also want the ability to create abstract system with odd rules defined by modifiers, object archetypes, environmental effects and object states. I want to replicate the behavior of a light wave with all the glorious physics equations which would come along with that. I would want the software to be flexible. For a very rough idea of what i have in mind look at the scribblenauts unlimited object attribute editor here http://bit.ly/11ts1n7Then i guess i should have a much more vague yet precise question. Going off your last sentence, it seems that you may have misunderstood me. I know that there is no such thing as the 'best' tool, best strategy or best language or what have you. My dad owns a workshop filled with hundreds of tools and machines. There is simply no best tool, each tool or machine is designed for a very specific use in a very specific situation and from what I have read on HN that seems to be the case with programming as well. I remember reading an article linked on HN discussing different programming languages and one quote in particular shocked me, "what can be done in one language may take two lines of code, but done in another the same task can take a thousand lines of code." This is what led me to ask the question 'what language should i learn.' I'll do my best to further describe what i want to accomplish, but first watch this video of a program called gource http://bit.ly/UHcc9w From what i have read about gource it seems that two rules define the interaction between the dots and the lines to create very complex and sometimes mesmerizing behavior. A) All dots project a repelling force which only affects other dots B) Lines, which represent file directories, provide a sort of skeleton between dots. They are modeled with an attracting force affecting each dot on either end of a line. What I want to do is create (or find) software which allows users to quickly and easily create simulations of objects in an environment which can also be defined by the user. (think mine-craft, but you can now play god with the laws of physics, create new sets of rules, forces ect.)sorry for the wall of text, i did my best to explain.
> sorry for the wall of text, i did my best to explain.
No need to appologize, I definitely asked for it.
I'll get back to your original questions in a little bit, first I want to talk about your list of inspirations:
> Gource > Minecraft > scribblenauts unlimited object attribute editor
And your description of what you want to do:
> simulations of objects in an environment > Physics > experiment with familiar concepts, like gravity, wind, light, ect > create abstract system with odd rules
What you want sounds fun, but complicated. If you _really_ want to do this, it will obviously be possible. It may take a lot of work, but from here out, I'm going to assume you'll be willing to put in a lot of work. Even with that assumption, I think the best advice anyone can give you is unrelated to any technology: Limit your scope.
I've started a significant number of projects, super excited about all the possibilities, and started writing everything for the general, most abstracted case. When I do this, I invariably get bogged down quickly. When I'm more focused on one small feature, things turn out better. You want something that is immediately fun, even if the scope is tiny.
You can see this in your inspirations as well. Minecraft started development on May 10th, 2009[1]. It was playable by May 16th 2009 (First officially numbered version). That seems like a ridiculously short development time, but note that inventory management (the ability to pick up and place blocks) wasn't added until August 4th 2009. It's clear that Minecraft started with the smallest kernel of something that would be playable, and slowly grew from there, accumulating things that make it more fun.
So, the best advice I can give you, is to find the tiniest kernel of your idea. What is the smallest, simplest part that could still be fun? Your goal should be to narrow your scope as much as possible and then make that.
The next piece of advice is going to relate more to specifically what you want to do, and the tools you'll need to do it, also though, narrowing your scope further. There are going to be two sides to the software you're trying to write. The first is the physics simulation aspect, and the second is the graphical display. You should decide whether you are more interested in simulating novel physics, or displaying whatever simulations you do. That is, to begin with, would you rather see ugly graphics and deep physics or simple physics and beautiful graphics (obviously, I'm using physics as a generic term for whatever rules-engine you want to work with initially). Ultimately, what you're most interested in should inform what sorts of technologies you pick up.
If you really want to see beautiful animations of simple rules, you're not going to have fun building physics simulations in FORTRAN. If you want to precisely model the behaviour of subatomic particles, you're not going to have much fun with processing.
This brings me to your concern:
> what can be done in one language may take two lines of code, but done in another the same task can take a thousand lines of code
I'm pretty sure you understand that this quote means that some environments are well tailored to a given domain. One line of Mathematica could do more than thousands of lines of assembler (in the extreme case). I think it's important to recognize, though, that if you're doing anything that's even remotely novel, you're going to be writing thousands of lines of code. So I would simply pick something that you find fun, to start.
Processing might be fun. It's built on top of Java, so there's a lot of room to integrate it into a larger application. Play around with some of the examples [2] [3] [4].
Box 2D is a pretty interesting physics engine for games [5]. It's a primarily C++ project, but has bindings to other languages as well.
Start small, keep learning and experimenting, keep writing code, good luck.
[1] http://www.minecraftwiki.net/wiki/Version_history/Classic#Pr...
[2] http://processing.org/learning/topics/flocking.html
[3] http://processing.org/learning/topics/smokeparticlesystem.ht...
Thank you, really. I don't think i have ever seen someone provide citations outside of power-point presentations at school lol, definitely appreciate the response and thanks again.
Ideas have no real value. Execution is what matters. As for a language: my gut reaction is that you'd be best served by learning HTML5 canvas and Javascript.
but without understanding your concept how can anyone answer you? Even i didn't get what you want
If you want to develop a desktop/downloadable game for Windows/Linux/Mac I can recommend you BlitzBasic (http://blitzbasic.com) . It's Basic, it's very easy to learn and allows you to create 2D and 3D games. The compiled code runs very fast. You can check out a lot of examples on the website.
You want fast results while learning the good foundations of any programming language, so learn BASIC, seriously. You have ZERO hope of achieving what you want in a reasonable timeframe with any other language that anyone may suggest here. They'll suggest python, javascript, C++, some will even suggest LISP but dream on :)
Download DarkBASIC here: http://www.thegamecreators.com/?id=2000&m=view_product...
It's free, fast, it has 3D, 2D commands and everything you might wish for.
or ill do something stupid and try to learn 2 languages at once :) thanks
Poes law?
Since you are concerned about revealing what you have in your mind, it would be preferable to talk to someone in you network directly. Because without any proper spec, giving direction might take to entirely other path which might not take to your goal.
I'd choose Processing for quicker results. http://processingjs.org/ http://processing.org/
Watch this video and see if it can help you explain better what you want to do. You might also do a Google search for terms like: HTML5 canvas physics game
Start with C SDL if you only want to do 2D stuff. Pygame is pretty good, too!