8 ms·
Great comment. I agree with nearly everything you said, but where I end up is the polar opposite. I can't stand Scala for all the reasons you mentioned. The
by MetaCosm 13y ago
Great comment. I agree with nearly everything you said, but where I end up is the polar opposite. I can't stand Scala for all the reasons you mentioned.
The poetry thing is really dead on -- when Larry Wall spoke of Perl -- he said he explicitly wanted you to be able to write poetry with it. This led to the write once, read never reputation of Perl... that Scala is quickly stealing.
Scala is on my "will not work with" list of languages/technologies -- which is generally limited to old languages/tools that I have experience with (like Progress 4GL, Mumps, etc), but don't want to touch. It is a maintainability blackhole and generally horrible (to me) to work with, despite being fairly comfortable with the core (1400 or so hours billed).
- kvtrew76557 13y agoI've developed and maintained multiple large systems in a team using various languages. I would much rather maintain a system written in Scala than either Java or various scripting languages we've used and the view is shared by the whole team. It's far less verbose than Java and very maintainable compared to other very large systems written in scripting languages.
- MetaCosm 13y agoWe simply disagree on this. I would rather use almost anything else except the random DSL wasteland that is Scala. Even Ruby or Python (with the horrible GILs) is preferable. The groups I worked with made different determinations than your team, but if you guys love it, enjoy. Seriously, if you find a technology your whole team loves, you are KILLING it. Both companies I worked with have since dropped Scala (after literally hundreds of thousands of dollars spent on the attempts) entirely internally due to maintenance and talent acquisition issues.
- trailfox 13y agoI would rather use almost anything else except the random DSL wasteland that is Scala In my experience very little Scala code uses DSLs. Learning Scala isn't that tricky for anyone who knows Java, which is a pretty big pool.
- pivo 13y agoThat was not my experience with Scala. Every library we used had its own DSL and that made the code really hard to read. Maybe things are different now, but I'll bet that was a lot of people's first experience with Scala. It's what turned me off to the language, even though I did like using the standard Scala library quite a bit. Edit: It was two years ago so other than Lift and some SQL DSL I don't recall which libraries we were using. I do recall wishing I hadn't taken that job.
- trailfox 13y agoThat's pretty odd. What libraries were you using?
- nimbix 13y agoMy "favorite" part of Scala was half a dosen DB libraries each re-implementing SQL as a DSL.
- trailfox 13y agoC# does that too. It's called LINQ and it's very popular.
- nimbix 13y agoAre there a number of slightly different and incomplete variants of LINQ, like there are SQL DSLs in Scala? Because if not, then LINQ is "the right way" of doing this kind of thing. And if I remember correctly, LINQ is also useful outside of the DB domain, for things like filtering arrays and so forth. I once read an article about how Java programmers can hold a conversation on the topic of upsides and downsides of multiple dependency injection containers while C# programmers only have one available and have nothing to say on this topic. That article concluded that having one "good enough" solution can often be better than having multiple slightly different and incomplete ones, even if each has its own strenghts, and I'd say the same is true when it comes to the C# LINQ vs. Scala SQL DSLs.
- oulu2006 13y agoInteresting, I'm from Sydney and we are seeing a large increase in Scala developers becoming available. Several large companies have been hiring them by the truck load and the local Scala meetup regularly gets 50-80+ people. I too suffered a bit from DSL hell, especially some of the more extreme examples like the library "dispatch" where you need a "element lookup table" to figure out which squiggly line to use. But once you have a stable set of dependencies the initial DSL influx subsides and you start to work with a fairly manageable subset of them on a day to day basis.
- dragonwriter 13y ago> Both companies I worked with have since dropped Scala (after literally hundreds of thousands of dollars spent on the attempts) Hundreds of thousands of dollars is on the order of, what, 1 engineer-year?
- danieldk 13y agoThere are other JVM languages that are far less verbose than Java, without the complexity of Scala, with better compile times, and better compatibility with plain-old Java. For instance, Kotlin.
- pkolaczk 13y agoKotlin is not much simpler than Scala. It implements some of the Scala features in actually more complex and IMHO less elegant way,(pattern matching, null safety), copies some 1:1 (declaration site variance) and leaves out some of the most powerful ones (implicits, dependent types). I personally don't buy it. I like languages which offer few, but very general and powerful features / abstractions, than languages that concentrate on directly supporting special cases.
- qznc 13y agoMaking a language less simple/more complex, in some cases leads to an easier language. For example, Lisp has a simple syntax, but most people would consider infix math notation easier, although more complex.
- trailfox 13y agoKotlin hasn't even been released yet, and it looks just like Scala.
- danieldk 13y agoIt 'looks just like Scala'? It is not even a functional programming language. Let alone that it supports implicits, general operator overloading (operator overloading is very limited in Kotlin), existential types, etc. In fact Kotlin looks mostly like Java with some additions to make everyone's lives easier (closures, extension methods, data classes).
- pkolaczk 13y agoIt managed to copy almost every single Scala feature and is not even functional? Impressive.
- jerkface 13y ago4GL and MUMPS? Sounds like you've spent a bit of time in the dark corners of the healthcare industry. My condolences.
- MetaCosm 13y agoIndeed, DEEP in the east coast systems. But, it was great for me, it was literally name my own price consulting (lawyer rates) with multi-month contracts. I would guess it still is a name your own price market if you have the stomach for it. Travel and horrible tech. I was in an odd position of having picked up 4GL and MUMPS via odd random ways when I was 19/20 -- so when everyone who used to maintain those systems vanished, I was around to step in and bill like crazy for helping them port OFF those systems onto more modern tech. Every port a MUMPS app to Erlang... I have!
- eropple 13y agoI've been considering picking both up on the off chance I run into legacy systems. Any suggested reading material?
- MetaCosm 13y agoNot really, I was lucky enough to have mentor who literally just let me screw around with them. I had hundreds of real hours programming random stuff on both, as well as fixing real world problems with the safety of someone double checking. So I was very comfortable and I mostly used reference manuals for quick look-ups. These systems are VERY different that what you are most likely used too, so having face time with them is really important.
- davidw 13y ago> Ever port a MUMPS app to Erlang... I have! Wow - that sounds like an article I'd read!
- teh_klev 13y agoI had a brief but fascinating encounter with MUMPS back in the late 80's on some ancient Data General Nova/Eclipse kit. I kinda wish I'd persevered, if only for minting cash for the bank account.
- rdtsc 13y ago> Scala is on my "will not work with" list of languages/technologies Just curious, what are the some languages/platforms you like or enjoy using? (Mine are Python, Erlang and Go for ex).
- MetaCosm 13y agoHobby wise: Haskell, Rust, Nimrod, Haxe Shipping code: Go, Erlang, C++11 (avoiding legacy), F# (with Xamarin) I program in many more, but those are probably my top 8 right now.
- tinco 13y agoYou never work with scripting languages? (i.e., why is there no Python, Ruby or Javascript in your lists? or maybe I do'nt know Haxe, does that replace them?)
- Zolomon 13y agoBoth Haskell and F# have good REPLs and are adequate for writing "scripts", maybe he prefers statically typed languages?
- MetaCosm 13y agoAnd Go compile speed combined with "go run foo.go" makes it feel like a scripting language without a REPL. But in reality, when I need quick scripting, I mostly use ZSH.
- asdasf 13y agoI'm not them, but I have no scripting language in my list either. There is simply no need for one. For small sysadmin scripting, sh is nicer than a scripting language. For anything bigger than ~50 lines, I use haskell.
- tinco 13y agoFair enough, but sh is a scripting language also :)