HN user

vorg

1,814 karma
Posts6
Comments2,088
View on HN

Looks like Auckland NZ is planning on following this trend by building two tram lines over the next 10 years (CBD down Dominion Rd to Airport, another CBD to West), 60 years after following Sydney's lead of tearing out the trams (first replacing them with electric trolley buses, then removing the overhead lines 20 years later).

I don't see either line making a financial return on the investment, but the NZ government is financing it all by plundering the NZ Super Fund, which was originally intended to provide super payments for NZ's over-65-yr-old retirees. Of course, they're framing it all as "the Fund is making a long-term investment in the country's transport infrastructure", making the eventual huge losses some other goverment's problem.

No, I am right, because I didn't say Apache Groovy didn't have lambdas, I said it still didn't have the Java 8 lambda syntax in response to the comment that Groovy was so "ruthlessly" Java-syntax compatible. So you are wrong about me being wrong.

Netflix used Groovy

Does Netflix still use Groovy? You make it sound like they no longer use it for new coding projects. If they do, you should have written "Netflix uses Groovy" and said what they still use it for.

At some point I switch to full Groovy projects, switching on static compilation

If you let your Apache Groovy scripts get too large before switching on static compilation, you often have to modify the types and logic in your programs before they'll even compile. This problem occurs because static compilation was only bolted onto Groovy for version 2.0 and there's an impedance mismatch between what's required for its dynamic and static modes.

inorganic life, simple life, and sentient life

... and prescient life. Don't forget the next stage on from sentience. The line between sentience and prescience also seems blurred, given how many humans nowadays report having flashes of the future.

Although Mandarin isn't "influenced" by Latin, it is also influenced by English. In China most everyday writing would just insert the letters "DNA" into the text.

But even for scientific writing, my dictionary translates DNA as 脱氧核糖核酸, where 脱 means peel off, 氧 means oxygen, and 核糖核酸 means RNA, so DNA = de-oxy-RNA. As for RNA, 核糖 means ribose and 核酸 means nucleic acid. And in 核酸, 核 means nucleus/core/pip and 酸 means sour/acid, so again the meaning of the characters joined together are simply the sum of their parts. That's always been the case in my limited experience with medical words in Mandarin.

the most valuable skill a programmer can have isn't technical, but rather social: empathy

You should say "a programmer needs social skill as well as technical skills to be valuable". If a programmer doesn't have a basic aptitude for programming-like tasks, they won't be able to understand how the language works, anticipate technical problems, or organize and design systems. Until you've worked in a group that's filled with "programmers" who don't have the aptitude for coding, you won't really understand this. The social skill must complement the technical aptitude and skills, but is not more important than them. In fact, I'm even suspicious of people who say "the most valuable skill a programmer can have isn't technical, but rather social" because they often turn out to be aptitudinally-challenged programmers themselves.

Having a runaway hit isn't just about creating it, but also successfully maintaining it. Strachan abandoned Apache Groovy only 2 years after creating it so he doesn't really count. Unfortunately he let in someone without any programming aptitude into the Codehaus despotry, and was eventually eased out with stirred up conflicts like the one over builder syntax in Dec 2005. He even had his commit privileges stripped from him afterwards.

Too bad Apache Groovy itself didn't remain popular after popularizing the name "it" for the much older idea of contextually-defined pronouns in programming languages. Using the names of pronouns in English (like "this" and "it") is easier for an English-speaking programmer to understand than symbols like "$1" or "_". But because of Groovy's bad project management, another programming language (Kotlin) is becoming widely known for introducing the "it" name.

81 is probably as inaccurate the other way as 15 is today

I can understand both how and why someone would push Apache Groovy's ranking higher up the Tiobe results, but I wouldn't know how you could push it down, let alone why anyone would. #81 is probably as accurate nowadays as the mid-40's has been for most of Groovy's life on Tiobe since 2006. Groovy's seen a significant drop in use (outside Gradle) over the past few years.

They're talking about "Go 2" the brand, not Go 2.0 being a new major version having breaking changes to Go 1.x. There are no plans for a breaking-changes Go 2, only occasional additions to Go 1.x under an ongoing "Go 2" developer relations effort.

active COBOL use that continues today [...] 220 Billion LOC

That 220b LOC is because most newly-written COBOL programs today are copied and pasted from some other large existing program, then some small parts of it changed. I know in one large corp I once worked at, a manager ordered that instead of a new code being created for a new customer in the program suite as was usually done, every program in the suite was cloned and the new customer's name was hard-coded into the strings in the program text. That manager got the new system up and running in record time and was well regarded by his peers. The maintenance programmers and computer operators got some extra job security in the years ahead too.

the currently-popular crop of languages: Java, C, Python, C++, C#, VB.NET, JS, PHP, SQL, Objective-C, Ruby, assembly, Swift, Matlab, and Groovy, say

Did you get this list of 15 languages from TIOBE's July 2019 top 15 rankings at https://www.tiobe.com/tiobe-index/ ? It also says Apache Groovy has risen from #81 in July 2018 to #15 today. I do believe the #81 ranking but the rise to #15 only 12 months later is ludicrous. Someone's obviously spamming a search engine to get that ranking up. I know someone does the same thing with Groovy downloads from Bintray.

Now if Groovy's ranking has been fabricated over the past year, then surely some others of those languages have also been similarly fabricated for much longer, and their popularity has been exaggerated.

Myths about Perl 6 7 years ago

Scripting languages were to the 200x's what visual 4GL's were to the 1990's, i.e. a whole bunch of them came and went, and only a few gained mass adoption, perhaps 4GL's Visual Basic and Delphi, and scripting languages Javascript and Python. The rest are dead, or slowly dying.

That natural garbage collection happens during sleep, you need to sleep on it a couple of times. So make that a staged 25 minutes, i.e. 10 mins one day, 10 mins the next, then 5 mins on the third day. Only then will the mental block be gone -- as long as there's only about 7 shortcuts you don't like (and that's plus or minus 2, probably minus).

Oh, and that's a good night's sleep, not a programmer's every-other-night sleep, so better stage that 25 mins over four days, not two.

using all-lowercase letters for the compiler and title case for the language

'rakudo' is an implementation of 'Rakudo', huh? It's only natural for one to tag the specification and an implemention of it with different nouns in one's mind, even when there's only one implementation. I tend to think of 'go' being the reference implementation of the language called 'Golang', although its Google backers don't differentiate their official names.

Groovy is one language

Apache Groovy is two languages. The Groovy 2.x download, first released in 2012, bundles two different compilers that were both forked from the Groovy 1 compiler. Only one of them has upgraded to the JDK-7 invoke-dynamic capabilities, and the other (which hasn't) is the one actually used by Gradle and Jenkins and everyone else. Last month, the Groovy project managers at the ASF announced they were keeping the upcoming Groovy 3 as two separate languages also. The long-awaited parser upgrade from Antlr 2 to Antlr 4 is being bolted on to the invoke-dynamic compiler only -- the compiler no-one uses. They talked about Groovy 4 reverting back to a single language, but i'm guessing that's many years away because the original purpose of making Groovy be two languages in the first place was to not change the language that users actually use in any way, while simultaneously appeasing their own developers by bundling the code they wrote (invoke-dynamic bytecode generation, Antlr 4 parser upgrade, etc) in the language.

Grails which is a web framework for Groovy that is based on spring boot. It's plugins

I thought Grails uses Spring Boot only from 3 onwards, and only versions up to Grails 2.x have a plugin ecosystem. Virtually no-one has upgraded their apps and plugins since Grails 3 came out in early 2015, and no-one's started new projects in Grails since then. To mention Spring Boot and Grails Plugins in the same statement is misleading.

jobs that could be automated with a few days or weeks of programmer effort

Governments don't want the workers in their countries to not have a job, even when there's plenty of wealth to go around. Such people will actively demonstrate against all sorts of abuse by government employees and property owners, and even cause socialist revolutions at home and create terror abroad.

Even better for governments are when the workers in the country have heavily mortgaged houses and children with medical expenses. That's the main reason for BS jobs, high house prices, and fast food.

The capitalisation is maybe the most annoying for me, I think it was designed with an IDE in mind

If you don't have an IDE, you can start by making all functions and methods private. When you know you need it public, wrap the private function with the public one:

    func myF(ana int) { /*do something */ }
    func MyF(ana int) { myF(ana) }
The same trick is often used for adding extra parameters to a function, except that the function body must be moved:
    func myG(a int) { myG2(a, 7) }
    func myG2(a, b int) { /*do something*/ }
Adding publicness to a function is like adding an extra parameter to it.

20 years ago, a typical team was mostly CS majors [...] Today however, especially in fields like frontend development, its extremely likely ZERO person in the team has a CS background

A commercially successful frontend development requires visual design skills much more than anything else, or no-one will visit the site if it looks bad. I disagree with you about software development teams in other fields having no CS background. The CS majors write backend code and frameworks for frontend developers to use.

I know some people will use Python 2 beyond EOL, but at this point that's their task and the task of whomever they pay for assistance, not everyone else's

Virtually every common OS (i.e. Windows, iOS, and Linux) provides Python 2.7 by calling `python`, and Python 3.x by calling `python3` so it's more than "some people" using Python beyond EOL -- it's two languages being used simultaneously.

This is what most languages do when they make a breaking upgrade, e.g. Perl 5.x and Perl 6, or Apache Groovy (which ships two compilers in its Groovy 2 download bundle, i.e. the Groovy 1 compliant one used by Gradle and Jenkins etc, and the later 2012 one with the invoke-dynamic capabilities added. Two weeks ago, the Groovy project managers announced that Groovy 3 would keep on doing this, putting the rewritten parser into the compiler which no-one uses, and keeping the main compiler at Groovy 1 capabilities.)

An official "EOL" from the Python Benevolency doesn't mean Python 2 has reached the end of its life. There's too many projects out there using it for the same reasons this one is, i.e. "Because I started this project in 2011, though, with Python 2, you will need Python 2".

Both Python 2 and Python 3 will continue to exist for active projects for a long time yet. All programming languages have this issue, though many try to hide it, such as Apache Groovy.

In 2012, Groovy 2 shipped as two separate compilers bundled together, one was a continuation of Groovy 1 and the other was the new edition with the invoke-dynamic capabilities. A few weeks ago, the Groovy Committee decided to keep these separate in the bundle for the upcoming Groovy 3 release, add the new features such as the parser upgrade from Antlr 2 to Antlr 4 to the invoke-dynamic compiler only, and keep the other compiler (the one actually used by Gradle and Jenkins and everyone else) at the Groovy 1 capabilities.

So virtually everyone will be using the old antlr2 parser and slower dynamic function dispatches in Apache Groovy for a long time yet, something which the Groovy project managers are deliberately doing to cater for all the legacy Groovy code out there.

Languages of India 7 years ago

Indian identity was split right in the middle and was done on religious lines

India and Pakistan also each have their own major river system (Ganges for India, Indus for Pakistan) which is important for food supply and low transport costs. This helps each country remain functionally independent from the other.

SwiftUI 7 years ago

Objective C is much higher than Swift: 11 vs 18.

And Apache Groovy rose from number 91 to number 17 in the past 12 months also according to that same Tiobe page (May 2019). Quoting Tiobe for anything only discredits what you're trying to prove.

@AnaniasAnanas: And someone with less money than you can use your software source code "as a reference" when writing their own open source reimplementation. They won't put your name in the copyright notice because they didn't use any of your code, they only used your code "as a reference" when writing their own.

Once upon a time in the West only property-owners could vote in national elections. Then they changed the law to give all citizens (over 18) the vote, regardless of whether they owned property or not. They should have changed the law so all citizens owned the property they lived in -- and thus given the vote to every citizen that way.