General Question

davidhimself's avatar

What programming language is best for my project?

Asked by davidhimself (47points) November 12th, 2012

I have an actual project I need to accomplish. I would like to build an app that lets me do the following:
-Register students in a DB.
-Once they take their tests, load them accordingly.
-Allow students to access their grades (current and previous) with a password.
I have a language academy. I want to build an app that can be scaled, from a simple app that allows me to record the students’ test results to one that lets me handle the registration process, add manual payments, etc.
I have very basic programming knowledge. I am willing to learn.
My app needs to first let me organize students into classes, record the students’ grades, and allow students to check their grades online. It would be a plus if the app (once working) could store data locally and then upload it when there is a working internet connection.
What programming language would allow me to this best/easily?

Observing members: 0 Composing members: 0

24 Answers

bolwerk's avatar

You haven’t said whether your app is web-based or not, but that might affect my suggestion. I’d say go with PHP if it is or PERL if it’s not. MySQL is a good database choice, but there are many. I’m suggesting these options because they’re:

• free (monetarily)
• widely available from hosting providers
• have favorable licensing terms for startups and established businesses alike
• all pretty well-balanced between ease of use and finding professional programmers if you ever need outside help

FWIW, you really have a lot of options here and you’re talking about doing probably a number of applications. You’re talking about some kind of client-server arrangement, which means you might even write in one language on the server and another on the client. Since the data will be stored in a database, you really have the option to use any language with faculties for working with said database.

The hard part early on might be changing the database, not the programming language you use to manipulate the data and output. Almost any language should be able to work with MySQL, which is one reason I suggest it.

Local input could be as simple as making Excel spreadsheets with your data, saving it locally, and uploading it to a server that processes the input when you get around to it.

jrpowell's avatar

A LAMP stack can do what you want and it has the benefit of being really portable. PHP and MySQL run on anything and it is easy to switch around hosts if you need to grow. The same can’t be said for Ruby and Python.

And with PHP every question can be answered with with google.

phaedryx's avatar

I would recommend python (django) or ruby (rails). PHP is a poorly designed language that is easy to get started with, but as your project grows your code will get harder to manage (google PHP sucks to find examples).

I would recommend starting a free app on Heroku.

What programming languages/environments are you already familiar with? Sometimes it’s easier to build on existing knowledge.

gorillapaws's avatar

I second @phaedryx. Django or Ruby on Rails. Both are excellent frameworks, have lots of major sites using them in the wild and are designed to be easy to work with and easy to make changes to. They also look great on a resume.

davidhimself's avatar

I am definitely thinking about a webapp.
In regards to my programming “experience” if it can be considered that I took three “programming” classes at school and fiddled around with Java (which I hated), so you can say I more or less have an understanding of programming concepts. I have never truly developed a working app (at least a decent one) and I have also been curious about RoR, and PHP.
I already have a hosting and domain where I keep the academy’s website under wordpress.
My question is more like, from a newbie point of view, what language would make things actually happen more painlessly? Like, from this perspective, how will I see more results and more effectively? I am not quite sure I got my point accross.

bolwerk's avatar

@davidhimself: I think the PHP sucks thing gets a bit overplayed but, as I said, there isn’t really anything terribly wrong with trying different things. Maybe spend a day or two coding a few simpler sites in different languages and see what you end up comfortable with. I should clarify what I said above: your database is harder to change than how you interact with it. Also, even in active development, a PHP script and another kind of script can exist side-by-side, but you could really get screwed if you suddenly need to move your data from (say) MySQL to MSSQL or perhaps PostgreSQL. There are reasons having two scripts around isn’t ideal, but it’s not really impossible either. Also, the structure of your database, once set, is the type of thing that can bite your ass later.

This might really grandfather you into PHP on the server-side, but if you’re already using WordPress, maybe you can look into programming WordPress extensions, or at least see what WordPress features already exist that do some of what you want to do and how you can “glue” them together. WordPress already includes user authentication mechanisms and content management, so building on it isn’t exactly crazy. Certainly WP gets used in some somewhat unexpected ways for content management – I think I’ve seen corporate sites doing storefronts or even online banking using it.

davidhimself's avatar

@bolwerk That is very good advice. I am really considering giving PHP a chance over RoR (even though my programmer friends will dis me). I had never given thought about a Wordpress workaround. Maybe it is wise to explore if Wordpress can at least incorporate any of the features I am after.

bolwerk's avatar

@davidhimself: My advice is start with a database design and know exactly what kind of data the database is going to hold. Small changes are okay, but large ones can bite you. This will prevent a lot of rewriting later. To get started, you can even administer this database by hand using the MySQL Administrator GUI tool or PHPMyAdmin before a single line of code has been written.

I’d probably just go with WordPress for user-facing site, given what you seem to know about programming (though, make sure you like PHP first!) and the fact that it may need to be integrated into your existing web site anyway. I think it’s better to keep student-related information out of the WordPress database as much as possible, and you can even enforce this by giving your WordPress extension code read-only access to the student info in another database. In this sense, you turn WordPress into a user-facing “client” for your application.

Think of administration as being another client with different privileges. To start, use MySQL’s GUI app or PHPMyAdmin. Later, if you need simpler administration later (e.g., for people other than you) you can design a separate site, probably preferably outside of WP, for administrators to edit scores and stuff. It doesn’t sound like students should really be adding to the “Student” database, only reading from it. This site doesn’t have to be in PHP, either.

An “administrative” site written elsewhere is where you can facilitate converting scores in Excel (for instance) into data useable by your MySQL database to place in the Student database. It doesn’t really have to have anything to do with WordPress. It might be the type of thing you do last, since the first steps should be getting your data organized and getting it so people can read it – inputting it can be done by hand until you’re ready.

phaedryx's avatar

A side note: there are already a lot of learning management systems out there and many of them are open-source so you can run them on your own (like you might for a wordpress site). Another option is using a hosted LMS (I have some friends at instructure and I’ve been pretty impressed with them).

So, what I’m saying is that you could certainly write a web app for what you want, but I’ll really recommend checking what’s already out there before you tackle it yourself.

bolwerk's avatar

@phaedryx raises an interesting point. And integrating an LMS’s data into WP probably isn’t that hard either, if you prefer to go that route for a public-facing site.

ETpro's avatar

^^^ I was going to say I’d look at what’s already there for an LMS in Wordpress or such before reinventing the wheel. Even if there is something off the shelf, you’ll probably find reasons to tweak and improve it, which will place you squarely under the hood doing the programming you wish to get involved in.

lifeflame's avatar

Have not tried this myself, but it seems like it might be worth checking out. It could potentially be already what you want, minus the password access thing, which you will need to figure out and code yourself:
http://wordpress.org/extend/plugins/db-toolkit/

The lack of documentation for this plugin is annoying but there seems to be tutorials:
http://dbtoolkit.co.za/building-a-employee-database-in-0-2-6-7/

Response moderated (Spam)
davidhimself's avatar

Hello guys, sorry for the late reply. A few months back I checked the existing LMS and tried a couple out without any luck. I had forgotten all about them after you guys mentioned it and decided to give them a try again. I did find one good one, efrontlearning, but the thing is, I want a system in which I can manually record test results, and it seems all LMS only allow for tests to be taken within the system and be automatically corrected.
I will look further for wordpress solutions and report back to you.
Nonetheless, I have become more and more reluctant about coding it myself. It is kind of overwhelming, I mean, I think it is too big a project to get started with as a newbie.

bolwerk's avatar

@davidhimself: what do you mean “manually record results”? You want to be able to punch them in a database yourself?

davidhimself's avatar

@bolwerk Our students attend classes personally. My system would keep track of the evaluation results they take IN the classroom, be it written, oral or any. An administrator will manually punch the test results for each student in a database that will later be accessed by every individual to check their progress throughout the whole 18-course language program.

bolwerk's avatar

@davidhimself: OK, gotcha. Assuming the LMS is database-driven, I’m not sure it’s really too crazy, if you like the featureset of a given LMS, to put “fake” results into it. You need to be careful to follow the parameters the LMS follows to make sure the rest of the LMS stays functional. Of course, if most or all the LMS features are redundant, starting from scratch just might be easier.

How does Totara fit in what you want to do? (It’s free.)

davidhimself's avatar

@bolwerk I have tried to “tweek” (without messing with the code) the LMS I have come accross to actually display the grades I want, without much success.

I have just read the Totara gradebook settings and it does allow advanced grading options. I am going to proceed to download, install it and try it. Thanks a bunch! I will let you know how it goes.

davidhimself's avatar

@bolwerk Ouch! It seems as if I cannot download it from anywhere.

bolwerk's avatar

@davidhimself: oh, sorry, my bad. Try Moodle? Apparently Totara is a service based on that.

davidhimself's avatar

@bolwerk I think Moodle is the way to go. Even though it is way too big for my current needs, it does let me manually set grades/grading system as I please.

bolwerk's avatar

Cool, let us know how it goes.

Going back to your original problem, I don’t see why it would be hard to use Moodle to display grades online – and nothing but grades.

Response moderated (Spam)
Response moderated (Spam)

Answer this question

Login

or

Join

to answer.

This question is in the General Section. Responses must be helpful and on-topic.

Your answer will be saved while you login or join.

Have a question? Ask Fluther!

What do you know more about?
or
Knowledge Networking @ Fluther