
Ask HN: What language should I develop in? - ashread
I&#x27;m currently working on an idea for a community management app and as I&#x27;m not technical. I was wondering what the pros and cons are of developing in a certain language. Languages that have been recommended so far include; Ruby, PHP and Python.<p>Any advice would be greatly appreciated.<p>If you&#x27;re interested, here&#x27;s the app I&#x27;m developing: http:&#x2F;&#x2F;getnudge.co&#x2F;
======
pedalpete
Great to hear you're rolling up your sleeves and going to give developing it
yourself a go.

I taught myself to program using PHP, then moved to Rails, and now do mostly
Javascript and Node work.

There are a few things to consider. Number one, you're absolutely going to
need a front-end, which means you're going to need to learn javascript, and
probably use a framework like backbone, angular, or ember. Personally, I think
knockout may be the easiest of all of these to 'pick-up', but none of them (I
don't think) are going to be easy as a beginner.

At first, I'd suggest your back-end can wait. You can use parse or firebase or
one of the other back-end as a service providers to manage your data. Just
make sure you're able to get it back later.

Now, if you're adamant about doing the server-side stuff, I'd say go with
Ruby-on-Rails, which is a framework for making it easier to build and manage
an application written in Ruby. The framework does a lot of stuff for you, and
you can host it on heroku fairly easily.

A few good things about Rails (I haven't used other frameworks like Django
(Python) or Larvel (PHP)), is that it forces you to have a program structured
in such a way that if you bring in another developer at a later date, they
should be able to find their way around your code base fairly easily. That's
what got me to make the switch, I was doing a contract I knew I wouldn't be
working on long-term, and new that a rails app would be easy for somebody else
to step in on.

~~~
joepour
> probably use a framework like backbone, angular, or ember.

Absolutely, do not do this. Just use jQuery at first. Don't use a framework
until you experience WHY you need a JS framework.

~~~
pedalpete
That's a good point jeopour. A framework can also make things more
complicated, but they are good for learning how to structure your programs.
What would you recommend for learning structure.

~~~
joepour
There are a lot of excellent resources online such as blog posts or open
source projects on github, but the way I learnt was by reading a couple books
people had recommended me. I also took patterns commonly found on the server
side of things and implemented in a way relevant to my client side code.

Let me know if you need some recommendations!

------
easy_rider
One of my friends wants to learn how to code, and asks me where to start, and
what language (PHP? ). I always tell them; well think of something you want to
solve first, smaller problem the better. Then google how to work out that
problem. If they can't do that; (i.e. they do not make any attempt! ) , I
won't invest anymore of my time because they clearly lack the mentality to do
it.

I started with PHP (3 back then) because I had built (copy paste amalgamation)
a website, and I didn't want to maintain all these html files, so probably
altavista'd something in the lines of "how to include other page into page
html" . I know back then I was also messing with Newsdesk, which was CGI/Perl,
and remember adding some fields to the whole thing so my buddy's could post
their Warez uploads on there.

I actually ended up with one of the biggest Warez sites in the scene at that
time. I actually had mostly no idea what I was doing. And there was no Google
back then. Altavista ruled the market.

Anyway what I'm going to is: If you do not have this mindset, you will
probably not make it as a programmer. And that's ok, because maybe you have
different goals. Just make sure you understand what you want to do.

There are a huge amount of musicians who probably never imagined being great
or a rockstar, they just liked playing music and figured out how.

Last note: if you're picking between for example "PHP" , "Python" , "Ruby" I
would definitely start working with a framework, because it will help you
start off the right way; using a design pattern and command line tools.

------
PaulRobinson
If you want to be a developer, you should aim to learn one new programming
language a year, at least to the point where you can understand the strengths
and weaknesses of the language. High-level languages like Ruby, PHP and Python
are all good. At some point dive into functional, and at another point go a
bit lower: C, perhaps.

However if all you want to do is build this one product, then you need to
evaluate which framework is easiest to get started in. So, choose a feature
and build it in a few different frameworks and decide which one clicked for
you.

My recommendation is to try Rails, Django and CakePHP. If you're feeling
brave, Meteor (in Javascript) is worth a look. Figure out what worked for you,
and what didn't and make the decision from there. You might like Ruby but hate
Rails: try Sinatra. You might love Javascript but hate the conceptual building
blocks of Meteor: try Node.js. And so on.

There is a lot of personal preference going on here, and I presume this is for
now a side project so your focus should be on having fun. I think if you can
get your head around it, Rails will be the one that gets you the fastest from
"I have this idea" to being able to use it.

------
izietto
The technology choice is a consequence of your needs. If it is a one page web
app maybe node.js + JS-framework-at-your-choice, or Rails + Angular.js are
good options; if it is a "classic" web app there's plenty of options: Rails,
Django, Play (a Scala framework), PHP, Haskell, it's up to your tastes (I
would seriously consider Yesod for example, an Haskell web framework); if it
is a normal app Haskell, Java, Scala, C, Python/Pypy, Ruby, ...

I suggest you to choose some options, play with them for a short time (2 days
- 1 week), and finally go for one of them.

------
duhast
Don't go with PHP. It's obsolete and obscure programming language. Look at
Python (Flask), Scala (Play Framework). Tool selection is important. Do not
listen to those who say that it does not matter.

~~~
melkior
PHP might be a lot of things, but 'obscure' isn't one of them.

~~~
hmsimha
By obscure they must have meant, 'yet still ubiquitous'

------
bitboxer
The language is not important. There is another factor that is way more
important:

Do you know people using one of the languages? If yes, you could ask them
about problems you have. Will be easier than going to stackoverflow.

------
beagle3
Real answer: depends how much you want to become technical.

Mostly real answer: Ruby, PHP and Python are fine choices. Avoid Java, C++, or
C#.

Relevant answer: Assuming you want to get something done before "becoming
technical" (if ever) Python, by a wide margin - but more than that, you have
to pick a framework to work in: Django, Web2py are the two I'd recommend
looking at.

Far out answer: Look at Tersus.com - If your app fits tersus (and many do, at
least in their prototypical/MVP stage), you won't have to program anything,
you'll just have to draw an annotated diagram.

~~~
rjbwork
>Avoid Java, C++, or C#.

Can I ask why? I'll fully admit to being a C# "fanboy", as they say, at this
point in my career, but that's because it has so many features and syntactical
constructs that are amazing and that I simply NEVER encountered elsewhere in
my schooling, internships, or career. I simply feel more able to turn my
actual ideas of what I want the computer to do into code with C# than anything
else I've used, including Python (distant second) and Ruby.

~~~
beagle3
Op said he is not technical. C# is a fine language, but not if this isn't your
profession. Python is.

~~~
rjbwork
Fair enough.

------
pan69
It's a little bit like asking which color you should like. A lot of main
stream programming languages are very similar in capabilities but differ in
some of the details on how they express this, i.e. the syntax. The programming
languages you end up choosing probably has a lot to do with how appealing the
language and the ecosystem around it is to you.

You might want to try a few languages such as Python, Ruby, PHP, Javascript,
etc. I would suggest to focus on the language first and then the frameworks.

------
meerita
Start with anything that takes you to an MVP fast. You probably will be
iterating months with this until your solution needs a re-thinking or pivot:
you don't need to change your lang right now.

It happened to me 3 times the same way: we started with X in a year or 2 we
ported to Y.

Personally, I would go Ruby or Python, they're pretty much solid, lots of devs
around. Then, if you have the need to scale: i loved Erlang, but I like also
Go a lot.

------
joepour
It sounds like your are not so interested learning to programme but rather it
is just a means to building this project you have in mind.

That being said you should just choose a popular web framework like Ruby on
Rails or something like CakePHP. This means that any problem you run into will
have been encountered and solved by someone already and you can pretty much
just Google your way to a half decent prototype.

~~~
ashread
Hello, thanks for your reply. You're correct, my main aim for this question
was to understand which language may be best to get the app developed in.

I'd love to learn a language too, and eventually be able to develop/maintain
apps myself. But for this project, I won't have time to learn.

Thanks for the feedback.

------
alaskamiller
Real answer: it doesn't matter. Pick one and go.

It takes 3 months to get okay with something. 6 months to be decent. 9 months
to be like, okay, I kind of get this, and then at the end of the year you'll
probably change your mind and try something else.

I tried PHP, it was easy. Too easy. Hated it.

Tried Ruby, then Rails came on the scene and it became cool. Ended up hating
it too.

Now I'm on Python. Learned Django. Tolerating it, but switched to Flask.

What I really want to master is JavaScript, closures, then node.js and
AngularJS.

Just start. You can switch after. And to be real, making websites is actually
really easy with any of the languages. Whatever you're thinking of doing
there's probably already ten other projects on Github that has redone what
you're thinking of that you will end up using.

It's the deploying, that perfect minute customization that you really, really,
really want, scaling, and long term maintenance that's going to be tough.

~~~
antihero
I started off my Python adventure in Flask, and now pretty much use Django for
everything - I found that when I used Flask, I'd essentially just start re-
implementing Django.

Also, Django REST framework is utterly amazing for building APIs.

~~~
yen223
+1 for the Django REST Framework. However, I'm not a huge fan of Django's ORM.

~~~
namelezz
+1 for not being a huge fan of Django's ORM. :)

------
CmonDev
C#. It's a modern multi-paradigm multi-type-system language.

Best choice if you can get Visual Studio (paid) along with ReSharper (paid).

Will let you target all mobile platforms via Xamarin (paid) (since you want to
develop an app as opposed to a website).

If you want to get a prototype quickly rather than focus on code quality then
one of the purely dynamic language options would also be OK.

~~~
victorhn
Do you know of some open source project/application which can be useful in
learning C#?

~~~
CmonDev
Depends on your objectives and situation.

1) gamedev => MonoGame 2) business (SQL DBs) => NHibernate 3) web => SignalR

I personally never learned by participating in OSS but times change.

------
ohadron
All three can get the job done, have tons of resources and extensions
available, very active communities, proven reliability and infrastructure
available, with a similar learning curve.

If you have a friend that can help you when you're stuck in any of these
languages it would be a good reason to choose one over the others.

------
ben_hall
For me it's about the community. Every language has a different mindset / way
of approaching a problem. Read some groups, have a look at the various
packages on github and see which community fits best with what you're
personally doing.

Having contacts / friends who could help is also an advantage.

------
jbrooksuk
Use whatever you're most comfortable with.

------
asselinpaul
Cool site, rendered well on my iPhone except the top logo which was a bit
blurry on a retina screen.

Keep it up

~~~
ashread
Thanks so much :) I'll take a look at the logo and see if there's anything I
can do with it.

Appreciate the feedback. Is it something you'd personally use?

------
mattwritescode
Which ever you are the quickest programming in. Lets face it time is money.

------
camus2
You cant go wrong either with Rails(Ruby) or Python (Django),they will help
you develop your app quickly and both solutions are fun to use. I personally
prefer Ruby while Python is easier to deploy on a server. But you'll attract
more data scientists with Python when your prototype is mature.

PHP : while easy to learn, i would not recommend it.It's an old badly designed
language that has little future outside cmses.I only use it to customize CMSes
today,i would not develop any app from scratch with it, furthermore writing
PHP is awfull compared to Ruby and Python.

NodeJS: While Javascript everywhere seems like a good idea(you'll have to
learn Javascript to script the browser anyway), NodeJS use async programming ,
and async programming is hard,no matter what people say, furthermore Node is
not mature yet, especially its libraries.

Java(JVM):If you have time try it(Spring/Play/...). It will feel hard and
verbose but You'll learn a lot of interesting concepts. If you want to code a
prototype quickly forget about it. And Java has a lot of very good and mature
librairies.

So if you want to develop an app quickly and you care about how your code look
like, go with Python or Ruby. If you have more time go with the JVM.

Also check basic informations on these topics :HTTP,Rest,OAUTH you'll need
them pretty quickly if you want to interact with Twitter.

~~~
h-go
While I agree that PHP is a badly designed language, I disagree that writing
PHP is awful. You can make PHP beautiful. OO PHP and using MVC makes things
way more easy to handle.

