Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Fiedler
Jun 29, 2002

I, for one, welcome our new mouse overlords.

Notorious b.s.d. posted:

.net core on Linux is cute but are there any enterprise users?

yes. lots of them. (and, as you well know, there are also lots and lots of enterprises that use .net on windows)

Adbot
ADBOT LOVES YOU

redleader
Aug 18, 2005

Engage according to operational parameters
just lol if you use a language controlled by a large corporation

Fiedler
Jun 29, 2002

I, for one, welcome our new mouse overlords.
yes we should only use programming languages that are controlled by committees made up of employees of at least two large corporations

Fiedler fucked around with this message at 06:10 on May 27, 2019

Soricidus
Oct 21, 2010
freedom-hating statist shill

Malcolm XML posted:

dotnet core is v solid what with oracle making GBS threads the bed on JDKs and Java. Too bad graal is _even_ better but they are going full EE licensing bullshit for it :(

also graal is inexplicably based on java 8 because I guess making your shiny new tool actually provide the current supported language version is just too drat hard

akadajet
Sep 14, 2003

I’ve done a dotnet on Linux recently and it works great

Beamed
Nov 26, 2010

Then you have a responsibility that no man has ever faced. You have your fear which could become reality, and you have Godzilla, which is reality.


Notorious b.s.d. posted:

.net core on Linux is cute but are there any enterprise users? the .net / windows connection is so old it has poisoned the ecosystem

yeah there's tons

Shaggar
Apr 26, 2006

Notorious b.s.d. posted:

as long as .net is tied to windows, a sane man will pound nails through his dick rather than use .net

.net core on Linux is cute but are there any enterprise users? the .net / windows connection is so old it has poisoned the ecosystem

being too poor to afford a windows license is understandable, but many people use Linux because they're cheap and then wonder why things suck. good tools cost money.

feedmegin
Jul 30, 2008

Shaggar posted:

being too poor to afford a windows license is understandable, but many people use Linux because they're cheap and then wonder why things suck. good tools cost money.

Hi Steve Ballmer, hows life back in 1998? You might want to buy this cool new startup called Google just sayin'!

TheFluff
Dec 13, 2006

FRIENDS, LISTEN TO ME
I AM A SEAGULL
OF WEALTH AND TASTE
no, shaggar is right and it's kinda pissing me off

feedmegin
Jul 30, 2008


'
Taken together, the .NET Core and Mono runtimes have a lot of similarities (they are both .NET runtimes after all) but also valuable unique capabilities. It makes sense to make it possible to pick the runtime experience you want. We’re in the process of making CoreCLR and Mono drop-in replacements for one another. We will make it as simple as a build switch to choose between the different runtime options.'

Uhhh why not just pick one and integrate whatever from the other?!

TheFluff
Dec 13, 2006

FRIENDS, LISTEN TO ME
I AM A SEAGULL
OF WEALTH AND TASTE
sql server is better than postgres
jetbrains is better than vscode
visual studio is far, far better than any other c/c++ ide
etc

suffix
Jul 27, 2013

Wheeee!
a reason i hadn't heard before in why generics are bad actually: they make your code insecure

quote:

Security consultant here.
The fact that Golang has no generic is a huge thing. I've read countless amount of code that abused generics (unfortunarely developers think they have to use generics all the time if they are available) and is probably completely insecure for the simple reason that very few people manage to audit/understand the code. If it generics could only be used when necessary, yes, but there are no technical way to enforce this.

Gofmt is the second blessing. All codebases look the same because it is not customizable. This makes reading Golang code and understanding it fast as hell.

The GOPATH is also a huge win. You always know where everything is and it is really fast to figure out about dependencies or structure of the project.

What I'm saying is that in my years of security consulting, Golang codebases have always been the clearest ones to read and have always been the most secure ones.

can't even count all the gaping vulnerabilites i've had because i made a treeset<foo> and the compiler enforced that it contained foo and no one had to copy paste the implementation and manually change the types

leftist heap
Feb 28, 2013

Fun Shoe
i'm the security consultant

leftist heap
Feb 28, 2013

Fun Shoe
C must be really secure then

Fiedler
Jun 29, 2002

I, for one, welcome our new mouse overlords.

feedmegin posted:

Uhhh why not just pick one and integrate whatever from the other?!

the code authored by microsoft is better but nobody's going to knife miguel's baby, so...

Fiedler
Jun 29, 2002

I, for one, welcome our new mouse overlords.
that golang security consultant is attempting to refer to c++ templates, and he's correct to the extent that c++ developers do use them to write lovely code that's difficult to decipher. but that's a c++ problem. when faced with the ocean of language design possibilities, the idiots at the helm of c++ always choose to steer directly into the rocks of complexity.

DONT THREAD ON ME
Oct 1, 2002

by Nyc_Tattoo
Floss Finder

suffix posted:

a reason i hadn't heard before in why generics are bad actually: they make your code insecure


can't even count all the gaping vulnerabilites i've had because i made a treeset<foo> and the compiler enforced that it contained foo and no one had to copy paste the implementation and manually change the types

all of the complaints these programmers make about generics are a problem of type inheritance and not a problem of generics. their only experience with generics is with enterpise java where it sucks because you have to deal with generics on top of the insane type hierarchies enterprise programmers favor.

once you remove inheritance you no longer really need generic variance (which is the part people really struggle with) and once you've done that there's really nothing to be afraid of. go doesn't do oop and mostly favors copmosition and if they add generics to the language it won't automatically turn into the complexity explosion they're so afraid of (in fact the opposite since they'll be able to delete tons of copy paste code).

DONT THREAD ON ME fucked around with this message at 20:52 on May 27, 2019

Malcolm XML
Aug 8, 2009

I always knew it would end like this.

Soricidus posted:

also graal is inexplicably based on java 8 because I guess making your shiny new tool actually provide the current supported language version is just too drat hard

java 8 is the last good java. everything after it sucks

Progressive JPEG
Feb 19, 2003

suffix posted:

a reason i hadn't heard before in why generics are bad actually: they make your code insecure


can't even count all the gaping vulnerabilites i've had because i made a treeset<foo> and the compiler enforced that it contained foo and no one had to copy paste the implementation and manually change the types

yeah you know go code is secure when its users are forced to use void pointers everywhere instead of getting compile-time errors via generics

and GOPATH can absolutely be a security problem because the default behavior is to prefer random old and/or malicious libraries on the build filesystem. so after diligently flagellating yourself before lord pike by copying all the source code of all your dependencies (and all their dependencies ad infinitum) into your source tree, you must also gently caress with GOPATH to avoid the default behavior of preferring whatever random poo poo is found on the host

what a moron dont sign

Plorkyeran
Mar 22, 2007

To Escape The Shackles Of The Old Forums, We Must Reject The Tribal Negativity He Endorsed

suffix posted:

a reason i hadn't heard before in why generics are bad actually: they make your code insecure


can't even count all the gaping vulnerabilites i've had because i made a treeset<foo> and the compiler enforced that it contained foo and no one had to copy paste the implementation and manually change the types

you might think that because a security consultant's job is literally to read code and find problems with it they would be pretty good at reading code, but in practice it seems to be the exact opposite. i am completely unsurprised that a security consultant likes go as every single one i've ever worked with would rather audit 10k lines of copy and pasted code than have to understand even the simplest abstraction.

Progressive JPEG
Feb 19, 2003

behold the standard golang json parser, which just throws up its hands and returns a tree of nested void pointers: https://golang.org/pkg/encoding/json/#Unmarshal

Soricidus
Oct 21, 2010
freedom-hating statist shill

Malcolm XML posted:

java 8 is the last good java. everything after it sucks

what. how.

is this a jigsaw thing? because you can basically ignore that. worst case you might have to add some extra command line arguments to shut it up. in return, you get var without having to lombok, which is great.

Vanadium
Jan 8, 2005

Progressive JPEG posted:

behold the standard golang json parser, which just throws up its hands and returns a tree of nested void pointers: https://golang.org/pkg/encoding/json/#Unmarshal

didn't come here to defend golang, but you're supposed to pass in a pointer to a specific struct or slice of structs or w/e, and it'll use reflection to assign to all the fields.

it's probably not optimal but it definitely doesn't force you to into dynamic typing in user code.

leftist heap
Feb 28, 2013

Fun Shoe
hot take but the new java licensing stuff isn't a big deal

mystes
May 31, 2006

leftist heap posted:

hot take but the new java licensing stuff isn't a big deal
It's not a big deal if you understand that you should just use OpenJDK, but it seems like this message is somehow not getting through to people who work at companies that use Java in 2019 at all, so it may very well end up being a big deal.

akadajet
Sep 14, 2003

mystes posted:

It's not a big deal if you understand that you should just use OpenJDK, but it seems like this message is somehow not getting through to people who work at companies that use Java in 2019 at all, so it may very well end up being a big deal.

oracle doesn't want the message to get through. java is a trap.

Plorkyeran
Mar 22, 2007

To Escape The Shackles Of The Old Forums, We Must Reject The Tribal Negativity He Endorsed
transitioning to openjdk has been mildly obnoxious because it turned out that some of our stupid jenkins garbage didn't work with it and because jenkins is just a giant pile of plugins, updating any of them inherently means that something else breaks

but that was still like a day or two of work and not some endless oracle hell

Beamed
Nov 26, 2010

Then you have a responsibility that no man has ever faced. You have your fear which could become reality, and you have Godzilla, which is reality.


akadajet posted:

oracle doesn't want the message to get through. java is a trap.

yeah, it kinda sucks because java inspired the current Best Enterprise Language, C#, in so many ways, but Oracle ownership was always gonna doom it somehow.

Progressive JPEG
Feb 19, 2003

Plorkyeran posted:

transitioning to openjdk has been mildly obnoxious because it turned out that some of our stupid jenkins garbage didn't work with it and because jenkins is just a giant pile of plugins, updating any of them inherently means that something else breaks

but that was still like a day or two of work and not some endless oracle hell

Jenkins implements rpcs by serializing Java objects and sending them over the wire to workers so you must have exactly the same jre across all Jenkins nodes

ErIog
Jul 11, 2001

:nsacloud:

Vanadium posted:

didn't come here to defend golang, but you're supposed to pass in a pointer to a specific struct or slice of structs or w/e, and it'll use reflection to assign to all the fields.

it's probably not optimal but it definitely doesn't force you to into dynamic typing in user code.

Don't bother explaining how it works or why it's fine. This isn't the audience. After you get done explaining it someone will just complain about having to make structs in order to use it.

Progressive JPEG
Feb 19, 2003

like if you just took every design decision that Jenkins made and then built a system doing the exact opposite you'd have a really good CI system

akadajet
Sep 14, 2003

Progressive JPEG posted:

like if you just took every design decision that Jenkins made and then built a system doing the exact opposite you'd have a really good CI system

blue balls

Progressive JPEG
Feb 19, 2003

Vanadium posted:

didn't come here to defend golang, but you're supposed to pass in a pointer to a specific struct or slice of structs or w/e, and it'll use reflection to assign to all the fields.

it's probably not optimal but it definitely doesn't force you to into dynamic typing in user code.

you gotta make sure all your json structs' fields are Capitalized or else the json library can't see them and will silently drop data

they at least thought ahead enough to get around this by making the field name comparison case-insensitive lol

Blinkz0rz
May 27, 2001

MY CONTEMPT FOR MY OWN EMPLOYEES IS ONLY MATCHED BY MY LOVE FOR TOM BRADY'S SWEATY MAGA BALLS

Progressive JPEG posted:

you gotta make sure all your json structs' fields are Capitalized or else the json library can't see them and will silently drop data

they at least thought ahead enough to get around this by making the field name comparison case-insensitive lol

it's not silent, go is quite up front about exported and unexported fields. same deal with struct tags too. none of this is foreign to anyone who has read the documentation much less been through the learn go by example tutorial

eschaton
Mar 7, 2007

Don't you just hate when you wind up in a store with people who are in a socioeconomic class that is pretty obviously about two levels lower than your own?

Progressive JPEG posted:

Jenkins implements rpcs by serializing Java objects and sending them over the wire to workers so you must have exactly the same jre across all Jenkins nodes

sounds like Jenkins should be using Jini!

CPColin
Sep 9, 2003

Big ol' smile.

Progressive JPEG posted:

Jenkins implements rpcs by serializing Java objects and sending them over the wire to workers so you must have exactly the same jre across all Jenkins nodes

That…doesn't seem like how Java serialization works.

Plorkyeran
Mar 22, 2007

To Escape The Shackles Of The Old Forums, We Must Reject The Tribal Negativity He Endorsed
jenkins has its own implementation of groovy which is completely and utterly broken

jenkinsfiles let you do things like the following:

code:
node('linux') {
    sh './stuff.sh'
}

node('windows') {
    bat 'morestuff.bat'
}
the shell script is run in a jenkins worker with the label 'linux', and then the bat script is run in a node with the label 'windows'. one way you might choose to implement this is to have the script run on one node, and have sh() dispatch off to another node with the appropriate label. that doesn't really work with how jenkins is designed, though; if you had two sh() calls they'd have to go through the whole workspace initialization step each time, and you can interact with the host machine using the full groovy and java standard libraries which would have to be shimmed or something.

instead, jenkins picks the much cleverer solution of having node() serialize the entire state of the program, send it off to the target node, and then resume execution there. the jvm doesn't support doing that, so they decided they would write their own interpreter for groovy called groovy-cps. the problem is that they didn't do a very good job of implementing groovy, and so you regularly run into bugs like that ['a', 'b', 'c'].each { echo it } prints all three elements of the list in real groovy, but only prints the first element in groovy-cps. it took them over two years to fix this bug. groovy seems to have been specifically designed to enable and encourage as many cute metaprogramming tricks as possible on the jvm, but if you try to actually use any of them or do anything nontrivial (where "nontrivial" is sometimes as simple as "extract some duplicated code into a function") there's a pretty good chance that things will break in a way that's entirely impossible to debug because you can't run a jenkinsfile locally and you can't printf debug when the interpreter itself is the problem.

Progressive JPEG
Feb 19, 2003

Blinkz0rz posted:

it's not silent, go is quite up front about exported and unexported fields. same deal with struct tags too. none of this is foreign to anyone who has read the documentation much less been through the learn go by example tutorial

turns out that it was a bad idea to infer special meaning from capitalization of variables

Athas
Aug 6, 2007

fuck that joker

Progressive JPEG posted:

turns out that it was a bad idea to infer special meaning from capitalization of variables

Can you explain? This always seemed like a harmless if idiosyncratic design. I know of the ways people claim it can be annoying, but has it really been so in practice?

Adbot
ADBOT LOVES YOU

brap
Aug 23, 2004

Grimey Drawer
half the problem with apple developer tools is the weak hardware you have to run them on.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply