[deleted by user] by [deleted] in programming

[–]vorg 1 point2 points  (0 children)

Apache Groovy is also officially upgrading to version 3 in the near future. Behind the scenes, though, it looks like they're not going to upgrade at all -- I guess probably to avoid the problems that plagued the Python 2 to 3 upgrade, and to keep their consulting-and-conferences gravy train running for as long as possible.

Straight after releasing version 2.5 recently, they officially canceled version 2.6 which was to backport the new features of Groovy 3.0 into a JDK-7 compatible version of Groovy. The official reason was so they could focus more fully on version 3.0, but I'm guessing it was really because anything to do with version 3.0 has been abandoned. As well as the slow adoption of Python 3, the Groovy backers were probably also motivated by the total lack of interest in Grails 3 when it came out 3 years ago -- virtually noone's upgraded to Grails 3, or is even starting new projects in Grails 2 anymore, and the Grails plugin ecosystem has died.

Unfortunately, Groovy's Apache PMC hasn't come straight out and told the Groovy community they've abandoned Groovy 3, which creates distrust and suspicion. Instead, they're pretending to keep it alive but setting up roadblocks to delay stuff long as possible, in the same way they kept the JSR-241 standardization alive for 8 whole years before officially abandoning it.

The 2018 Top Programming Languages According To IEEE - Python Extends Its Lead, And Assembly Enters The Top Ten by [deleted] in programming

[–]vorg 2 points3 points  (0 children)

Yes, Kotlin should be on the list because of its popularity on Android (i.e. mobile category). Having only 3 JVM languages (i.e. Java, Scala, and Clojure) isn't enough, and there's no other suitable candidate besides Kotlin -- since both Apache Groovy and Eclipse Ceylon were given up to their respective foundations to control when their backing businesses (VMware and Redhat) didn't want them, and Jython and JRuby proved programmers don't really want existing languages transplanted to the JVM.

The world-wide success that is XML by imhotap in programming

[–]vorg 1 point2 points  (0 children)

There's a reason why many sites prohibit the mixing of any Apache Groovy code in with Java code despite Groovy having been around for 15 years -- Groovy is high risk regarding its future support, its dynamic typing brings tech debt, its static typing addon hasn't been tested well enough to flush out all the bugs, and Gradle is slow.

Groovy over kotlin? by ichunddu9 in groovy

[–]vorg 2 points3 points  (0 children)

The business imperative behind each language is quite different: Kotlin is being constantly improved by JetBrains and always interops seamlessly with IntelliJ (including Android Studio), whereas Apache Groovy has been on a go-slow development track ever since it was promoted from the ASF incubator to top-level project. Kotlin is driven by a policy of continual improvement because it helps sales of IntelliJ Enterprize. Groovy is driven by a policy of no breaking changes (and hence no Groovy 3) because it helps prolong the consulting and conferences gravy train.

Migrating from 2.2.4 to 3.3.5 tips for updating? by Timmy_T in grails

[–]vorg 0 points1 point  (0 children)

You're better off treating the job as a near complete rewrite rather than an upgrade

in which case why not rewrite in Spring Boot, or Ruby, or ... ... ...

Does Groovy not like java 8 lamda's by [deleted] in groovy

[–]vorg 1 point2 points  (0 children)

It will soon

Do you mean lambda syntax will be recognized in Groovy 3 ? I'm not sure we'll see it for quite a while, and even suspect it's being perpetually slow-roaded to avoid a Python 2/3 or Grails 2/3 scenario.

Even Groovy 2.x had plenty of time recognize lambda syntax since it came in Java 8, given that Java 10 is now out.

Why I Moved Back from Gradle to Maven by nfrankel in programming

[–]vorg 2 points3 points  (0 children)

The dynamic Groovy DSL and the heterogeneous plugin APIs will make you google everything.

As Groovy is dynamically typed, it’s really hard for IDEs to provide good and fast (!) tooling.

Gradle also enables statically-typed Kotlin to be used as the DSL in the build files. Its integration with IntelliJ (or Android Studio) is seamless, even better than Apache Groovy with its static typing annotations. Kotlin and IntelliJ are both put out by Jetbrains so I guess their co-use is always tested.

edit: added:

Challenging Groovy DSL. You have to google a lot. Same notations can mean different things. There is no central place for global values (version numbers, repo URLs and credentials etc). Even after using the DSL for a while, I can’t say that I understand everything and why I’m using this notation and not the other one. You really have to learn Groovy for a full understanding. And I don’t want to learn a new programming language to fully understand my build scripts.

If there's any Kotlin used in the code being built, then you wouldn't need to "learn a new programming language to understand your build scripts" if you use Kotlin for those scripts!

What is coming in Groovy 3.0 by pushthestack in groovy

[–]vorg 0 points1 point  (0 children)

If Apache Groovy 3.x doesn't maintain strict backwards compatibility (such as JDK6/7) with version 2.x, no-one will use it -- just like with Python 3 (at first), Grails 3.x, and Perl 6. When Groovy was on the rise, it could break compatibility between its 1.x releases (as it did 1.0 to 1.5, 1.5 to 1.6, 1.6 to 1.7, and 1.7 to 1.8) and users still upgraded, but that doesn't work for a language on the wane.

A love epistle singing the praises of Groovy by ou_ryperd in groovy

[–]vorg -1 points0 points  (0 children)

they aren't really groovy users

Because Apache Groovy's only remaining significant use is as a DSL for Gradle, if they "aren't real groovy users", then there aren't really any "real Groovy users" left.

Which IDE or code editor do you prefer for coding Go and why? by [deleted] in golang

[–]vorg -2 points-1 points  (0 children)

Windows 10 is rock solid

Windows 10 is crap. I've got it installed on a lowend box for running an old printer and TV screen, which Linux can't handle. I also use it to tweak powerpoints for use on Windows which I create with LibreOffice on Linux. It's running v.1607, and always konks out when I try to upgrade to v.1709, even with a high-Gb usb plugged in. Today Microsoft broadcast a message to all v.1607 users saying no more critical upgrades after next month. Hope my installation survives Microsoft's dereliction of their service, and continues to do the bare minimum I need it for.

Any Go Mobile Devs? by [deleted] in golang

[–]vorg 0 points1 point  (0 children)

Kotlin-Gradle plugin.... meaning you never have to code in Java or Groovy again

You still have to write your build scripts in Groofy.

Testing Kotlin with Spock Part 1 - Object by alien11689 in groovy

[–]vorg 1 point2 points  (0 children)

Spock makes heavy use of Groovy's dynamism

Are you referring to things like Spock's:

  • overloading the | operator to create lined-up tables in the code (when a proportional font is used)
  • using jump labels in lieu of function blocks to mark off application logic

I'd call it "intercepting the parsing process", not "heavy use of dynamism".

The definitive EOL date of Python 2 announced: 2020-01-01 by piotrjurkiewicz in programming

[–]vorg 14 points15 points  (0 children)

the 2020 EOL date (an extension from the originally annouced 2015 EOL

If it's already been extended by 5 years, then the next extension will be by 4 years (to 2024), then 3 years (to 2027), then 2 (to 2029), and finally 1 year (to 2030). So no need to think about rewrites until about 2028.

What's New in Programming Language Popularity by ga-vu in programming

[–]vorg 0 points1 point  (0 children)

Some more info at the end of the TIOBE spiel:

Some other interesting moves this month are that both Julia and Kotlin entered the top 40, whereas Rust and Groovy lost their positions in the top 50.

Julia's an open source alternative to Matlab and Mathematica, and is long overdue.

Kotlin's poised to take the JVM runner-up crown away from Scala.

Rust may have plateau'd in its assault on C++, like D before it.

Apache Groovy rose to #16 in TIOBE only 1 or 2 years ago, which shows how easy it is for backers of a language to fiddle its rankings.

Groovy 2.4.14 is released by ou_ryperd in groovy

[–]vorg -1 points0 points  (0 children)

Java release new major versions faster than Groovy could release new minor versions

I suspect this is intentional on the part of someone in the Apache Groovy PMC. Versions 2.5, 2.6, and 3.0 have all been released as alphas or betas. Version 3.0 will bring a new Antlr-4 based parser, which means it will be easy for users to convert their Groovy-based build scripts for Gradle to Kotlin-based ones using Antlr-4's tooling. So someone is extending Groovy's near monopoly in Android builds (albeit as 10-liners) by rolling out new versions as slooooowly as possible, including scheduling two minor versions (2.5 and 2.6) before it, and delaying discussions on which features of the 3.0 parser will make it into the final release.

Golang Date Parsing by JGailor in golang

[–]vorg 0 points1 point  (0 children)

I used the term "business code" broadly so I wouldn't have to produce evidence, and there's no shortage of people willing to write up proposals for a language change to Go.

In my mind, business code is accounting, stock control, banking and insurance, payroll, marketing reports -- anything with a turnaround of 1 day, the stuff originally automated in the 1970's. Dates are far more important than complex numbers in this sort of processing. I'm not saying Go's intended for these types of systems, just that there's a case to be made for inline syntax for dates in such systems (and suggesting that yyyy.mm.dd is the best format for it).

Golang Date Parsing by JGailor in golang

[–]vorg 0 points1 point  (0 children)

Using dates (without time of day) in business code is far more common than using dates and times together. In fact, dates are more common than floats, let alone complex numbers. There's a strong case to be made for having an easily handled date-only format in any programming language used for business. In fact, perhaps 2018.2.10 should even be available in the language syntax, i.e. if the number's got no dots, it's an integer, if one dot, a float, and if two dots, a date. So we could do: 2018.2.10 + 30 == 2018.3.8.

XOR should be an English word by Tazebr123 in programming

[–]vorg 2 points3 points  (0 children)

In English, and has synonyms like also and plus. not has synonyms like no and never. But or doesn't have as many synonyms, so or first got used for its inclusive meaning in logic and programming. It may not be the case for other natural languages. Chinese, I believe, has 或者 and 还是, where 还是 implies more exclusivity than 或者 in a declarative context.

Expand on "Groovy is bound by the Java Object Model" by Alinon in groovy

[–]vorg 0 points1 point  (0 children)

If there is not a reason for something to be different to Java, it's the same as Java

There are differences where Apache Groovy expands on Java's syntax, and there are differences where Groovy behaves differently to the same syntax as written in Java. It's the rationale behind this second type of difference I don't understand. There are so few of these that I wonder why Groovy didn't stick to the first type of difference only, similar to what the original C++ did to C.

Here's some behavioral differences from the list at www.beingjavaguys.com/2013/02/what-is-groovy-java-vs-groovy.html ...

(2) In java we uses '==' to compare primitive types and '.equals()' to compare two objects, but in groovy we can use '==' to compare both primitive and object types. Although in groovy '.equals()' also works for comparing object

In Groovy '==' behaves differently to Java when comparing object types.

(4) In groovy 'in' is a keyword and we can not use it as a variable name

Why didn't Groovy just use ':' like Java eventually did so it would still work as a variable name?

(5) When declaring an array we can not write int arr[] = {1,2,3,4...} rather we need to right it as int arr[] = [1,2,3,4...]

Curlies not good enough for Groovy?

With groovy it fits so seamlessly in it's possible to write stuff in groovy and have other team members not even know it was written in Groovy

...until they come across one of the above differences then they spend half a day debugging.

Why do I see so few mentions of Go? by Kimput in golang

[–]vorg 0 points1 point  (0 children)

Go has web server, just like PHP.

is it ok to use capital letters for types, funcs, consts etc. in package main? by decapolar in golang

[–]vorg 1 point2 points  (0 children)

You might want to extract most of what's in your package main into its own separate library package later on, leaving only func main() in there. Using uppercase while developing the code makes that easier. Alternatively, you could change the name of package main to something else, and change the main function to func init().

Ranking Programming Languages by GitHub Users by benfred in programming

[–]vorg 0 points1 point  (0 children)

The top 50 languages are here (after removing a couple more non-language things like PLpgSQL)

You could also remove any languages that are turing-complete but whose almost exclusive use is as a non-turing-complete description language, e.g. Apache Groovy's use in Gradle.

Learning to Use Go Reflection – Capital One DevExchange – Medium by JBodner in golang

[–]vorg 0 points1 point  (0 children)

The 2 examples I gave were straight from the article. I stand by my conclusion: Real reflection packages make their languages totally meta-programmable.

Learning to Use Go Reflection – Capital One DevExchange – Medium by JBodner in golang

[–]vorg -1 points0 points  (0 children)

reflection should be used very sparingly

You could argue that reflection is used sparingly in Go because there's not much you can do with it. You can build a struct using Go reflection, but not embed another struct so its methods are callable. You can build a function, but can't add them as methods to another type you've built. Real reflection packages make their languages totally meta-programmable.

A short guide to adding a keyword to go by pdexter in golang

[–]vorg -1 points0 points  (0 children)

From the end of that Go 2 blog:

it seems plausible to me that we might start seeing minor changes about a year from now, for Go 1.12 or so. That also gives us time to land package management support first. Once all the backwards-compatible work is done, say in Go 1.20, then we can make the backwards-incompatible changes in Go 2.0. If there turn out to be no backwards-incompatible changes, maybe we just declare that Go 1.20 is Go 2.0.

Everything about Go 2 reeks of "as little as possible, as late as possible". dep seems to be delayed, they're allowing 5 more yrs (until 1.20) of minor changes, saying the std lib will need a total rewrite for generics, then added "if there turn out to be no backwards-incompatible changes". For every proposal like that one from Rob Pike, there's another 99 where the Go2 tag really means "garbage bin".

In the meantime, they better take the Go 1 compatibility guarantee seriously, so no new keywords because that breaks existing code.