
What fucking programming language should I use? - publicfig
http://www.wfplsiu.com/
======
hythloday
TL;DR (I don't blame you, it's not that funny):

    
    
      Have you already established a language for your project or team?
        Yes:  Keep using that fucking language. Unless you can't accomplish your goals with your current language, you're setting back progress by starting with a new language.
        No: Are you building a mobile app?
          Yes: Are you building for Android, iOS, or both?
            Android: Looks like you're using fucking Java. Hybrid apps suck.
            iOS: Use fucking Swift. Hybrid apps suck.
            Both: Time to learn fucking Java and Swift. Hybrid apps suck, so your dumb ass needs to learn both.
          No: What the fuck are you building?
            Web app/Networked application: Is it a client-side app?
              Yes: Looks like you're stuck with fucking JavaScript you poor bastard.
              No: Are you working for an established enterprise or a startup?
                Enterprise: Just use fucking Java. No one ever got fired for choosing Java.
                Startup: Do you give a shit about concurrency?
                  Yes: Do you know why you give a shit about concurrency?
                    Yes: Are you into functional programming?
                      Yes: Do you need to use the Java Virtual Machine for some fucking reason?
                        Yes: Use fucking Clojure
                        No: Use fucking Rust or Elixir. I've got you this far, choose whichever one doesn't look like shit to you.
                      No: Use fucking Go.
                    Not really: I didn't think so you asshole. Just use Ruby - probably with Rails - and get the fuck out of my office.
                  No: Do you need static types?
                    Yes: Use fucking Dart
                    No: Do you want only one language in your codebase?
                      Yes: You're stuck with fucking JavaScript, but you already knew that
                      I don't care: Are you already familiar with at least one programming language?
                        Yes: Are you nostalgic for the web of the early 2000s?
                          Yes: You should probably stick with fucking PHP
                          No: Use fucking Ruby
                        No: Use fucking Python. It's easy to learn and very powerful.
            Desktop app: How fucking lazy are you?
              Really lazy: Damn it. Just use fucking Visual Basic. I hope you're proud of yourself.
              Sort of lazy: Just use fucking Java.
              I'll sleep when I die: Do it properly in some fucking dialect of C

~~~
Maken
I'm kinda puzzled there is nothing in-between a C dialect and Java for desktop
applications.

~~~
mamon
Unless you consider both C++ and C# "dialects" of C :)

------
StevePerkins
Maybe I'm getting old. I love these sorts of technology selector flowchart
things in general. However, the trope of throwing in a bunch of random "fucks"
and getting a ton of upvotes for it feels played out to me.

~~~
derefr
It's just poorly done. The bits like "I hope you're proud of yourself" and
"Just use Ruby - probably with Rails - and get the fuck out of my office." are
actually how you write in this style; the rest just seems like a templated
"I'll write it like this and then come up with something better" first pass,
that never got fixed.

------
klinskyc
Off topic from the article, I don't understand the purpose of using profanity
and then censoring it. Writing things like F!@K just seems like a weird middle
ground that loses the intensity of cursing and the professionalism of not
cursing.

~~~
publicfig
I originally titled the article with the censored version as that was the name
on the page. I believe they censor it on the first page as a way around
workplace filters, as there's a SFW button at the top. I think once you get
into it, the language is uncensored.

------
otabdeveloper
The "really lazy desktop app" choice is Qt, not Visual Basic.

Visual Basic hasn't really existed for decades.

~~~
richardwhiuk
VB.NET is still a thing isn't it?

~~~
AndyKelley
Yeah but why lock in with Microsoft when you can have a cross platform app at
the same abstraction and difficulty level?

~~~
hnbroseph
depends on whether the additional platforms are trivially ignorable or not.

------
misthop
It would be nice to be able to back up a question. It was pretty funny, but
having to start over every time to check out the whole decision tree was a bit
tedious.

------
Mahn
No quiz needed, the actual answer should be just "Whatever language you know
and can get shit done with".

------
lumberjack
I would say that if one does not have experience with an enterprise stack they
should really choose to work with one irrespective of whether they are a
startup or no. Your startup will probably fail anyway. The experience you get
is the only thing that you'll be left with. And if you chose to work with
chicken-scheme and what not, good luck putting that on your CV.

~~~
tracker1
Most "enterprise" stacks introduce complexity that isn't ever going to be
needed really early on, and in general that slows down initial development,
and the road to something that does its' job. Many of them are over-engineered
and a bad fit, used badly too often.

Of course the alternative is understanding your problem domain and picking
appropriate tools and approaches instead of using (insert .Net or Java
framework here) for everything.

------
stephenitis
Curious then realized it was very light in fun content. There is no way to get
to cobol for instance

------
AndyKelley
It got the wrong language for my example, a digital audio workstation with
peer to peer collaboration.

It said use Go, but Go is garbage collected and that is unacceptable for an
app that needs to process real time audio with low latency.

Same thing applies to any networked video game.

~~~
d0lph
I believe you can turn off the garbage collector in go.

~~~
AndyKelley
Uh. Citation needed.

~~~
bitdivision
You can set the environment variable GOGC=off [1]

There doesn't actually seem to be a way to explicitly free memory though so I
doubt this is actually used.

[1]: [https://golang.org/pkg/runtime/](https://golang.org/pkg/runtime/)

~~~
Zancarius
It's only intended for debugging purposes, near as I can tell (and I'm not
sure why anyone would want to do it in the first place beyond debugging):

[https://github.com/golang/go/issues/13761#issuecomment-16772...](https://github.com/golang/go/issues/13761#issuecomment-167721220)

------
gravypod
I always just choose whatever I'm most comfortable with.

You don't always need an edgy language to use. Just use what you know.

------
pbreit
I answered in such a way that I was expecting Python or Ruby but got
JavaScript. Is that the joke?

------
fucking_tragedy
Kids these days. You could replace ALL of this dynamic content with a static
page that says:

    
    
        Use the language that's right for the job.
    

You don't even need Javascript!

------
capote
It's telling me to use Java and Swift for mobile development because hybrid
apps suck. But Xamarin is fine, I don't get it.

------
jokoon
If I could use cython everywhere I'd probably use cython.

------
clishem
Request: what fucking text editor/IDE should I use?

------
VeejayRampay
I enjoy gratuitous profanity and PLs, well done.

------
Dowwie
..must.. not .. give in.. to .. my.. negativity

------
coderKen
Found this really funny, thanks :)

------
kylehotchkiss
javascript

~~~
akerro
For desktop app. You will regret it.

~~~
tracker1
Electron and nwjs seem pretty solid... VS Code works really well (for
example), and can leverage one of the most diverse module systems around.

~~~
copperx
I feel the urge to cry.

~~~
tracker1
I'm not saying it's the best option... more that it isn't a bad one, and
depending on your needs, can be a good one. If you want to share logic across
mobile apps, a web presence and a desktop deployment, leveraging your existing
developers and creating a relatively cohesive experience, it isn't a bad
thing.

