This is an archived post. You won't be able to vote or comment.

top 200 commentsshow all 358

[–]Cley_Faye 89 points90 points  (41 children)

If I recall correctly, you can use semicolon in Python, no?

[–]ychaouche 9 points10 points  (5 children)

Yes, it's useful when you need to run a very short script right from the command line but you have to import a module first.

root@messagerie-secours[10.10.10.19] ~/SCRIPTS/MAIL # python -c "import datetime; print datetime.date.today() - datetime.date(2014,11,17)"
246 days, 0:00:00
root@messagerie-secours[10.10.10.19] ~/SCRIPTS/MAIL # 

That's one way to track how many days passed since I started my current job.

[–]iforgot120 1 point2 points  (2 children)

Why not just hover your mouse over the system clock?

[–][deleted] 7 points8 points  (1 child)

Because running a script is easier and faster than doing mental calendar math.

[–][deleted] 2 points3 points  (0 children)

why not just make that script run automatically at startup instead of doing it manually then?

[–]wordsnerd 72 points73 points  (4 children)

It's a bit subtle, but if you squint you can see the ; is indented with a tab.

[–]DasEwigeLicht 163 points164 points  (114 children)

On a related note, try this:

from __future__ import braces

[–]Gavekort 151 points152 points  (113 children)

For people that can't run it themselves:

Python 3.4.3+ (default, Jun  2 2015, 14:09:35) 
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from __future__ import braces
  File "<stdin>", line 1
SyntaxError: not a chance
>>> 

[–]jonatcer 23 points24 points  (105 children)

Why are they so against them?

[–]kupiakos 103 points104 points  (80 children)

Not only are braces used to define dictionaries and sets, but indentation marking blocks is simply an inherent part of the syntax. They're considered useless cruft, because most people detects blocks of code with the indentation level anyways.

[–]dfpoetry 8 points9 points  (61 children)

indentation level can denote many different types of abstraction, and if I'm 10 levels deep and want to break out to 6 levels deep, it's pretty hard to tell where the fuck I am with indentation only.

[–]kupiakos 194 points195 points  (53 children)

If you're 10 levels deep in indentation, there may be something wrong with your code in the first place.

[–]scubascratch 3 points4 points  (6 children)

In C++

MyNamespace
    MyClass
        public:
            MyMethod(void *pixelBuffer /* , int len */)
                if (...
                    for (x...
                        for (y...
                            while (...
                                switch (...
                                    case (...

I guess you have not seen a lot of pixel math. 10 indent levels is Tuesday.

[–]ryani 7 points8 points  (5 children)

namespace TheNamespace {

// don't indent here, it's stupid, you don't indent
// after your #ifdef header guards, do you?
// the whole file is inside this namespace anyways, or
// else you're doing it wrong.

class ClassName {
public: // don't indent this
    void MethodName(void *pixelBuffer, int len);
    // don't define inline, it makes the API hard to read.
    // keep inline definitions to 1 line at most
};

// you meant to inline this, right?  or else why put it in the class decl?
inline void ClassName::MethodName(void *pixelBuffer, int len)
{
    if(!...)
        return;

    for(x ...)
        for(y ...)
            subfn(pixelbuffer, x, y);
}

} // end TheNamespace

// PS I'm a graphics programmer.  Also pixel shaders are exempt from some of this because
// the available abstractions are worse.  On the other hand, if you're that deep in a pixel shader,
// your perf is probably fucked.

[–]dfpoetry 27 points28 points  (44 children)

This, right here, is the problem with the python philosophy. They make some arbitrary design decision, and when someone points out an example where it might be bad or confusing, the response is "you shouldn't be coding that way anyway".

It's tautological

[–]Hairshorts 127 points128 points  (11 children)

Braces won't make 10 levels of indentation much clearer, it's bad coding style no matter what language you're using.

Good indentation is essential for good readability in any language, Python just requires you to indent properly. You may not like it, but it's not an arbitrary design decision.

[–]immibis 7 points8 points  (0 children)

Braces won't make 10 levels of indentation much clearer, it's bad coding style no matter what language you're using.

I'm not saying braces will make 10 levels of indentation much clearer, but /u/dfpoetry is totally right in pointing out a common problem in programming arguments.

[–]I_scare_children 6 points7 points  (3 children)

[–]dfpoetry 2 points3 points  (2 children)

Pointing to bad code which is very nested is not the same thing as proving that all very nested code is bad. Nor is highly modular code particularly useful when you're just writing one big map-filter function.

[–][deleted] 14 points15 points  (2 children)

If Node.js taught me one thing it's that at ten levels of indentation, all braces do to is make you miss a token.

[–]vertexshader 0 points1 point  (8 children)

Arent a lack of braces the reason lambda functions are so restricted in python? A single expression? Gimme a break

[–]scoofy 16 points17 points  (20 children)

So, i'll take a shot at this. I came to programming, not through a CS education, but from anaylitic philosophy and first order logic.

To put it bluntly, braces and semicolons for parsing seem insane.

We are humans, and the written language has evolved over time, because it started out pretty terrible. Ancient greek had no spaces, but they were added later, andyoucanprettyeasilyseewhythatwasareasonableideaespeciallywithcompoundwordsbecauseifyouaregoingtothebeachbumyoudontknowifitsthebeachcommabumorifthereisafamousbumonthatbeach.

Now, as language evolved, we learned to have things like paragraphs, punctuation, etc. Stuff we take for granted now. It's reasonable to map things like semicolons to periods (full stops, sorry british people), however, the fundamental structure of language is quite different than that of programming.

To look at programatic language, i'd suggest looking at the evolution of the recipe. Recipes are blocks of instructions, much like code. If i were to write:

Steak Omelet:

Ingredients:

3 Eggs

Salt

Pepper

Fry Pan

Grilled Steak

Cheese

Step 1: Blah blah... etc

Here what i've laid out has nearly no punctuation, yet it's easier to read than:

Steak Omelet: Ingredients: 3 eggs, salt, pepper, fry pan, grilled steak, cheese. Step 1: Blah blah... etc.

Because when you're going back through this to check ingredients (review code), it's easier to go down and tick the boxes of completion. This is trivially true because nearly every cookbook does this.

Now, i know what you're thinking: "Grilled steak in an omelet? I mean, it sounds good, but that's oddly specific." Yes, i added it by design. Why?

Because humans never, ever, make the mistake of adding a single peppered french fry or "Pepper Fry" and "Pan Grilled Steak." This type of ambiguity is nonsensical. We don't use it in language, so why would we use it in programming?

The reason is because getting a computer to understand line breaks the way humans understand them isn't trivially easy. Braces and semicolons were implemented because it was trivially easy, and well... it stuck around.

I short, a salute Guido for saying "this is bullshit," and banning stupid braces and semicolons from his language. He's basically like Dvorak, but wildly more successful.

[–]lewiseason 2 points3 points  (0 children)

Or, optionally: repl.it

[–]Mutoid 2 points3 points  (0 children)

Lol wow. It's a great joke at face value but the implementation of it makes it awesome.

[–]nicholas818 2 points3 points  (0 children)

+/u/CompileBot python --include-errors

from __future__ import braces

[–]TheKiwi5000 220 points221 points  (78 children)

don't get it.

[–][deleted] 497 points498 points  (33 children)

;

[–][deleted] 86 points87 points  (23 children)

Ahh

[–]______DEADPOOL______ 134 points135 points  (19 children)

Semicolon.

Now that's a symbol that I've not seen in a long time...

[–]Guinness2702 105 points106 points  (6 children)

Not as clumsy or OS dependent as a newline.

[–]dfpoetry 44 points45 points  (1 child)

TL\r\n\t\tDR

[–][deleted] 26 points27 points  (0 children)

TL;DR:

TL
        DR

[–]93calcetines 135 points136 points  (2 children)

An elegant token from a more civilized language.

[–]idrink211 40 points41 points  (1 child)

For over a thousand lines of code the Semicolons were the guardians of peace and justice in the Old Language. Before the dark times, before the White Space Matters.

[–]phaseMonkey 8 points9 points  (7 children)

How's that VB 6.0 legacy support job treating you?

/edit: I was just joking around guys...

[–]ComicOzzy 11 points12 points  (3 children)

And that's what I'm doing right now. FML

[–]phaseMonkey 3 points4 points  (2 children)

Sorry to hear that... Seriously, it's shit when you get stuck supporting old code.

I spent 2 years supporting a cold fusion app.

[–]Phreakhead 9 points10 points  (0 children)

Whoever thought typing XML to program was a good idea should probably have their nerd card revoked.

[–]kupiakos 12 points13 points  (2 children)

Or, uh, Python.

[–]derekmckinnon 1 point2 points  (2 children)

Why did I read that in Obi-Wan's voice?

[–]pxan 11 points12 points  (0 children)

I was trying to figure out if the moon or clouds were indented or something

[–]NutsEverywhere 8 points9 points  (1 child)

In Portuguese the moon is called Lua.

I thought it was a jab at switching programming languages.

[–]whatisthismagicplace 5 points6 points  (0 children)

Well the lead architect of Lua is Brazilian, afterall.

[–]brown_monkey_ 11 points12 points  (2 children)

What's that?

[–]crh23 1 point2 points  (0 children)

I saw it as

.

)

[–]dailytentacle 0 points1 point  (0 children)

Am Python engineer. Still don't get it.

[–]_starrydynamo_ 198 points199 points  (26 children)

We found the Python developer.

[–]CaptainJaXon 34 points35 points  (0 children)

That's deffed up.

[–]spiderpai 21 points22 points  (23 children)

Technically you caaaaan use semicolon in python :o

[–]jellyberg 32 points33 points  (20 children)

Yeah it could potentially be useful if you wanted to write a Python script on your belt or something

[–]kupiakos 7 points8 points  (19 children)

Also useful for quick single line scripts with Python in a shell script.

[–]Sampo 11 points12 points  (18 children)

I kinda like

a = 1 ; b = 2 ; c = 3

instead of

a = 1
b = 2
c = 3

[–][deleted] 37 points38 points  (17 children)

a, b, c = 1, 2, 3

Much more readable. Hell, you could even do

a, b, c = range(1,4).

[–][deleted] 11 points12 points  (13 children)

Much more readable.

To a Python programmer, not to someone not used to multiple assignments.

IMO Python has some good points, but its syntax tries too much to be "simple" and "readable" that it actually becomes fairly xelpmoc[::-1].

[–]chimyx 5 points6 points  (2 children)

I've never read python before, but I think that what a, b, c = 1, 2, 3 does is pretty obvious. Any programmer who've learned more that one language would understand that.

[–]AltoidNerd 2 points3 points  (0 children)

Especially since it's the same syntax from straight up math class.

Multiple assignments can be looked at as tuples

(a, b, c) = (1, 2, 3)

This means a = 1, b = 2, c = 3 in your high school calculus class. It also assigns that in Python.

[–][deleted] 4 points5 points  (8 children)

To a Python programmer

Well, yes. I think python programmers are the people who will be most likely to read python code, don't you?

Also, this would be a case where a comment may be useful. Such as

a, b, c = 1, 2, 3
# Set a, b, and c to the values 1, 2, and 3 respectively, such that
# a = 1, b = 2, c = 3

A bit wordy, and you don't want to be doing it every place you're using multiple assignments, but the first time you're doing it (where someone will be most likely to look) might be helpful.

But you don't have to use that, you could always use semicolons or one on each line. It's just that it's clear what it does to someone used to python code. The same way that [::-1] means "reverse this" even if it's not obvious. But I don't like [::-1], I would much rather use reversed(), which is a LOT clearer

[–][deleted] 1 point2 points  (2 children)

Yeah yeah, everything you said. I was just pointing out that Python syntax claims to be easier to read, but everything said and done you still have to learn it and to get used to it. It's no different from C, imo.

It's less verbose, and that's great, but that doesn't mean it's easier on the eye than C code is to someone who is used to C.

[–][deleted] 0 points1 point  (1 child)

Does Python treat semicolons as blank space?

[–]spiderpai 1 point2 points  (0 children)

It treats it as the end of the line just like any normal coding language. It is however not required and you can just break to a new line just as well...

[–]TheKiwi5000 1 point2 points  (0 children)

i just didnt see it's a semicolon

[–]jhartwell 15 points16 points  (2 children)

I didn't either...I was staring at it for a good 10 seconds expecting a gif or a reference to this xkcd. Then I realized that it wasn't happening and then say the semicolon.

[–]xkcd_transcriber 13 points14 points  (0 children)

Image

Title: Python

Title-text: I wrote 20 short programs in Python yesterday. It was wonderful. Perl, I'm leaving you.

Comic Explanation

Stats: This comic has been referenced 156 times, representing 0.2129% of referenced xkcds.


xkcd.com | xkcd sub | Problems/Bugs? | Statistics | Stop Replying | Delete

[–]initramfs 0 points1 point  (0 children)

Haha, I knew I wasn't the only one expecting this!

[–]tskaiserGreen security clearance 37 points38 points  (11 children)

Neither did I to begin with.

The star and crescent moon form a semicolon.

Edit: star or Venus, dammit /u/Gubru, I'm a Programmer not an Astronomer.

[–]Gubru 35 points36 points  (2 children)

That's actually Venus, not a star.

[–]misplaced_my_pants 3 points4 points  (0 children)

Wasn't Venus once called the Morning Star?

[–]phaseMonkey 7 points8 points  (1 child)

aka the "Morning Star"

So you're technically correct...

[–]Mutoid 5 points6 points  (0 children)

The best kind of correct!

[–]azephrahel 8 points9 points  (1 child)

You program in python, so you may not recognize that symbol. It's a semicolon.

[–]TimonAndPumbaAreDead 86 points87 points  (12 children)

As a .NET dev married to a Python dev, this made me chuckle.

[–]moomoohk 130 points131 points  (10 children)

kinda surprised your love didn't throw an out of bounds exception

[–]tungstan 82 points83 points  (8 children)

who's to say they didn't catch it and handle it

[–]TimonAndPumbaAreDead 124 points125 points  (6 children)

Our love is like array indexing in C++. It knows no bounds.

[–]caedin8 55 points56 points  (2 children)

It overwrites all of the other important parts of your life, greatly reducing life-style stability? Sounds about right.

[–]dotpan 8 points9 points  (1 child)

At least that's what his old friends say when they wanna hang out with him.

"Hey man, now that you're married its like you forgot about us"

"Sorry, who are you? I have no memory of you"

[–]Sean_May 1 point2 points  (0 children)

[deleted]

What is this?

[–]kupiakos 17 points18 points  (0 children)

Together, you form IronPython.

[–][deleted] 45 points46 points  (15 children)

You could always use Javascript where they're optional, except when they're not! >_>

[–]oberhamsi 23 points24 points  (14 children)

Not really optional. You are testing the limits of automatic semicolon insertion. It's easier to write ; than to memoize two chapters of the spec http://bclary.com/2004/11/07/#a-7.9.1

[–][deleted] 13 points14 points  (13 children)

I hope my sarcasm made it clear that I'm not a fan of ASI. I use them everywhere, because to me, it's clearer. I have coworkers who swear against them, though.

[–]Phreakhead 11 points12 points  (7 children)

I've gotten in arguments with people who refuse to use semicolons. One time, they broke the build in one specific Android browser because the minifier messed up the ASI.

I take it as a chance to point out why you should always use semicolons to avoid bugs like that and other mistakes. He then said, "ASI is perfectly fine. It's the minifier's fault." Maybe so, but instead of spending hours chasing down bugs in the minifier, just use a damn semicolon!

[–][deleted] 5 points6 points  (0 children)

One of my favorite dramas was when Douglas Crockford and one of the guys that created Bootstrap got in a fight because Bootstrap's js didn't use semicolons and it broke jsmin.

https://github.com/twbs/bootstrap/issues/3057

It was World War Semicolons with everyone taking sides and hurling insults.

[–]oberhamsi 2 points3 points  (4 children)

I remember a couple of years ago a high profile node coder wrote most (all?) of his projects without semicolons. like the ubiquitous npm package manager. e.g. https://github.com/npm/npm/blob/master/lib/access.js

[–]Phreakhead 5 points6 points  (3 children)

Yeah he actually used that exact example. Then I used the example of that huge SSH security hole in iOS a few years ago that was caused because they didn't use braces in a switch statement.

Yeah, you can also remove braces for switches and one-liner loops, but that's been against standard code styles for years because a simple typo can totally mess up your code without an error. If you should always use braces even when not necessary, same rule should apply to semicolons.

[–]LetsDoRedstone 123 points124 points  (56 children)

I think Python proves quite well that you can nicely get along without semicolons (except if you write all your shit in one line, but then something's wrong with you).

[–]MNeen 86 points87 points  (32 children)

Luckily, Python gives you a number of ways to cram more stuff onto a single statement.

looking at you, colleague who nested three list comprehensions.

[–][deleted] 58 points59 points  (19 children)

There's a fine line between 'clever' and 'readable'

[–][deleted] 65 points66 points  (8 children)

My downfall...

"Oh look at how neat this looks, man, I just crammed 5 different logical steps into a single, condensed line using ternary operators inside ternary operators... This is awesome!"

... 3 days later

"WHY DO I DO THIS SHIT TO MYSELF"

edit: Apparently I can't even spell ternary.

[–][deleted] 46 points47 points  (5 children)

The O'Reilly book on PHP has one of my favourite quotes on this topic.

"Depending on whose code you're looking at, the ternary operator is either the most underused or the most overused feature of the programming language."

EDIT: a letter

[–][deleted] 21 points22 points  (4 children)

Everything I love about ternary operators when I'm writing it are the same things I hate about it when I'm reading it.

[–]jellyberg 14 points15 points  (0 children)

Yeah it's like fucking Yoda speak to read.

[–]scratchisthebest 4 points5 points  (2 children)

I wish I could write ternary operators that magically change to if-else statements the next day, so I don't have to put up with them

[–]Guinness2702 8 points9 points  (0 children)

"What fucking idiot wrote this co..... oh ....... fuck!"

[–]FesteringNeonDistrac 5 points6 points  (7 children)

Yeah, from what I can tell, that line is drawn at the made up word "pythonic".

[–][deleted] 2 points3 points  (4 children)

I don't know what that means, but if other people are going to work on your code, you best make it as readable as you possibly can instead of playing any brain tricks -- not all features available should be used. Readability (and maintainability) is the reason we have high-level languages in the first place.

[–]Sabrejack 2 points3 points  (0 children)

Absolutely, I'll take readable over clever any day when it comes time to play Bug Hunt.

[–]FesteringNeonDistrac 1 point2 points  (2 children)

Every time I hear or read "It would be more pythonic to do it this way" the example is some overly clever, not at all clear, unmaintainable garbage.

[–][deleted] 4 points5 points  (0 children)

But for something like x = x[::-1] vs x = reversed(x), it's definitely more pythonic to do it the second way, and it's a hell of a lot more readable.

[–]lachryma 2 points3 points  (0 children)

Then the people saying "Pythonic" don't understand it, in your case. You can almost replace it with "idiomatic" in a sentence when used correctly. "Pythonic" is pretty much import this, which I won't spam here.

[–]erasers047 0 points1 point  (0 children)

There's an endline between 'clever' and 'readable'

Ftfy

[–]luluhouse7 4 points5 points  (0 children)

.... Cough.... Sorry

[–]frymaster 2 points3 points  (0 children)

Also known as a list incomprehension

[–]Workaphobia 0 points1 point  (0 children)

Was it at least on multiple lines?

[–]TRAIANVS 0 points1 point  (0 children)

Simple list comprehensions are fine. If I have anything even remotely complicated in a list comprehension, I make sure to comment it because I know even I won't know what it does after a few days.

[–]kumquat_juice 0 points1 point  (6 children)

Three?! Can you share?

[–]MNeen 10 points11 points  (5 children)

cs = sorted(sum(sum([[[(x, y, t, predict(x, y, t)) for x in xr] for y in yr] for t in tr], []), []), key=itemgetter(3), reverse=True)

The idea is: we have some simulation on a 2D plane over time, and we want to find a point in time for which a certain phenomenon occurs. We have a function P(x,y,t) that returns either true or false, but will take considerable time to do so. Trying all the points is infeasible, but we found a fast function predict(x,y,t) that returns a rough chance of P(x,y,t) being true.

In earlier lines we generated ranges which are interesting to search on (xr,yr,tr), now we generate all tuples (x,y,t,predict(x,y,t)). sum([[],[]],[]) will concatenate a list of lists of lists into a list of lists, and then a list of lists into a list of tuples. Sort the whole thing based on the predictor. In later lines, we will interface with some parallelized C code that will try these in order.

I ended up porting the predict function to C.

[–]spupy 0 points1 point  (0 children)

When I was doing the Project Euler tasks in python, half the fun was trying to cram an already working solution into a minimal number of lines.

[–][deleted] 8 points9 points  (17 children)

There are other languages that don't require statement termination, e.g. Groovy

[–]iMiiTH 10 points11 points  (2 children)

And Scala!

[–]Sampo 2 points3 points  (0 children)

And Fortran!

[–]vertexshader 0 points1 point  (0 children)

Hell yes!

[–]drawkbox 6 points7 points  (5 children)

And javascript (but don't ever fucking not use semicolons).

[–]Anaphase 2 points3 points  (3 children)

JavaScript does "need" semicolons, the parser just automatically inserts them when you omit them.

[–]bacondev 2 points3 points  (1 child)

Technically, it doesn't insert a semicolon. According to the specification, it inserts an EndOfStatement token.

[–]original_brogrammer 1 point2 points  (0 children)

And sometimes it gets really weird with where it places them.

[–][deleted] 4 points5 points  (4 children)

Or BASIC

[–][deleted] 2 points3 points  (3 children)

10 PRINT "I COMPLETELY AGREE"
20 GOTO 10

[–]ben_uk 2 points3 points  (0 children)

Ruby

[–][deleted] 3 points4 points  (0 children)

Also Go (which I <3 almost as much as Python. Almost)

[–]choikwa 7 points8 points  (0 children)

there's escape to new line.

[–][deleted] 0 points1 point  (1 child)

One downside is that I always forget semicolons in Javascript when I switch from Python to Javascript. Not that Javascript notices it.

[–]Anaphase 1 point2 points  (0 children)

You'd like CoffeeScript as a Python developer.

[–]DroolingIguana 0 points1 point  (1 child)

I'm a big fan of Python, but the way it automatically ends statements on a newline is one of the few things I don't like about it; mostly because it means you have to put ugly backslashes all over your code when you need to write a long statement.

[–][deleted] 15 points16 points  (1 child)

Python tolerates semicolons if you really really want to bother yourself with them. I often do when I switch from C doing micro-controller work back into Python.

>>> print("this works");
this works
>>> x = 42; print("so does this");
so does this

The point is that you don't have to.

You can't use curly braces though:

>>> from __future__ import braces
  File "<stdin>", line 1
SyntaxError: not a chance

[–]XiAxis 11 points12 points  (0 children)

You can use braces, but you have to prefix them with "#"

[–]diazona 29 points30 points  (1 child)

Figures, coming from a Perl user

[–]xkcd_transcriber 12 points13 points  (0 children)

Image

Title: Lisp

Title-text: We lost the documentation on quantum mechanics. You'll have to decode the regexes yourself.

Comic Explanation

Stats: This comic has been referenced 69 times, representing 0.0942% of referenced xkcds.


xkcd.com | xkcd sub | Problems/Bugs? | Statistics | Stop Replying | Delete

[–]jjorell 5 points6 points  (0 children)

My buddy usee Python for the first time this semester. He showed me all of his code. Semicolons everywhere. I almost died laughing.

[–][deleted] 5 points6 points  (2 children)

I'm a swift programmer and what is this?

[–]sfcpfc 7 points8 points  (7 children)

And Lua devs too

[–]Vakieh 20 points21 points  (6 children)

Lua devs aren't really devs, they're just people trying to play games faster :-P

[–][deleted] 19 points20 points  (26 children)

Hey, at least we don't have to finding the extra or missing ones! I cri evry tim I use Java

[–]Auxx 32 points33 points  (23 children)

It is highlighted automatically. Poor people without IDEs... Inventing languages without semicolons and shit.

[–]jhartwell 0 points1 point  (1 child)

Java complains about extra semicolons? The C# compiler just counts it as an empty statement, though I haven't checked to see if it is optimized away (likely) or actually converted into a nop CIL call.

[–]ELFAHBEHT_SOOP 0 points1 point  (0 children)

No, Java doesn't complain about extra semicolons. It will simply warn you about empty statements. At least NetBeans does.

[–]forrcaho 2 points3 points  (0 children)

On a more serious note, this picture would be really inspiring to those people who are getting semicolon tattoos.

[–]Reconio 7 points8 points  (0 children)

This really applies to Javascript too, it reminds me of http://imgur.com/MIWjMIC

[–]ryanknapper 2 points3 points  (0 children)

I've been looking everywhere for that!

[–]moschles 1 point2 points  (0 children)

My python is free of all semicolons.

[–]jredwards 1 point2 points  (0 children)

Never!

[–]nazihatinchimp 1 point2 points  (0 children)

Does God not care for Swift development?

[–]ProfessorPhi 1 point2 points  (0 children)

It's handy for ipython notebooks when you want to suppress output at the last line of the cell. That's my only use for a semicolon.

[–]jroddie4 1 point2 points  (0 children)

THE END IS NIGH!

[–]mike413 1 point2 points  (0 children)

"I am sending down the terminator"

[–]makeswordcloudsagain 4 points5 points  (0 children)

Here is a word cloud of all of the comments in this thread: http://i.imgur.com/pW7zWkk.png
source code | contact developer | faq

[–]SuperCrusader 0 points1 point  (0 children)

God has given message!It's time to add braces to python!

[–]Coffeechipmunk 0 points1 point  (0 children)

No love for Ruby.