What would you choose to fuck around with out of Haskell, Rust, and Go, (and add any other hipster languages in this list), if your two primary goals were:
1. Making yourself more employable
2. Fucking around with a fun and interesting language
What would you choose to fuck around with out of Haskell, Rust, and Go...
I'm currently learning Haskell. For neither of those reasons though. I will answer for your reasons though.
>1. Making yourself more employable
What is your career interest? For general business applications Java is still in high demand. I'm a web dev so I'm partial to node.js. It is in high demand.
Out of the languages you listed I suspect Go would be the most employable. They are all kind of hipster languages though.
>2. Fucking around with a fun and interesting language
Any of those three would do fine, but personally I'd pick Haskell. I'm particularly interested in functional programming atm though.
>Making yourself more employable
Shoot myself and employ myself as a cadaver
>Fucking around with a fun and interesting language
Python
Haskell just seems so useless though. It's definitely fun but I also don't have a phd in math
>Making yourself more employable
Go, Java if you don't know it already
>Fucking around with a fun and interesting language
I'd say Idris instead of Haskell.
>rust is as safe as haskell
Learn Elixir, interesting enough without being a special snowflake (Haskell, ML). You can pick it up fast and is great for parallel programming, has pattern matching as part of the language and recursion as the sole way of iterating
I agree actually. It's side effect free design supposedly makes it hard to effect change with the program but great for computing.
I'm learning it because I use javascript everyday at work and want to learn about function composition and effective functional programming and incorporate it into my js code.
Shen.
Has all the concepts? Check.
Works with all the things? Check.
Has a BSD kernel? Check.
> ML to the left of Java in safety
Cannot null-ref in Standard ML or Caml.
N.B. I'm one of the human irritants who shills meme languages (mostly Rust and Ocaml) here because I truly believe in their potential.
> Employable
There is some demand for all of the hipster languages you mention. There is arguably more demand for normie languages. I would argue it's worth knowing some of each.
I believe there will be more demand for languages like Haskell and Rust in the future (for reasons related to safely and expressivity; you can get a lot of shit done in few lines that you can have more confidence in). For unrelated reasons (mostly the need to quickly spin up concurrent servers), Go will also grow. Some firms already prefer to hire people with background in functional/type-safe programming.
I also love dependently typed languages. I have programmed in Ur/Web, which lets you write web apps that the compiler proves cannot crash/permit SQL injections/introduce other problems. I want to learn Coq and be able to derive software automatically from formally correct constructions. I've been reading this book:
adam.chlipala.net
Haskell is awesome, but there are settings where the laziness makes space usage hard to predict and changes to program state are truly necessary (think numerical/number-theoretic shit), in which case the purity is more frustrating than it's worth.
Likewise, I feel like Rust is C++ done right, but while I'm generally a fan of the ownership model as formalizing how correct C++ programs should behave, there are a few settings where it's unhelpful (think cyclic data structures like graphs). With that said, I'd rather implement even a graph database in Rust rather than C++ simply because of how helpful the compiler is and how useful crates are.
> Fucking around
This is fun in its own right.
Overlapping with employability, I honestly believe that knowing these languages makes you intangibly better as a developer.
>don't have a phd in math
youre already crippling yourself if you think you need a math degree to use/understand haskell
read learn haskell for a greater good (or w.e. its called)
its a nice book and its free (online) (i have PDF and maybe EPUB too, if you want)
>1. Making yourself more employable
Rust (its the future)
>2. Fucking around with a fun and interesting language
Rust, D, Zig, Nim, maybe Go
I already know some Haskell (not quite up to monads), but would like to go deeper
go on both criteria, easily
Rust or Python?
I should mention I have experience in Java, C, JavaScript. Not much Python.
I actually have read a bit of it, I was mainly memeing about math. It's more the useful factor.
Python not hipster enough for me.
>I'm learning it because I use javascript everyday at work
so you're a webshitter?
what do they pay webshitters these days?
wow, this chart really makes Rust seem like a god-tier language (Fool-proof C). Can anyone actually confirm? (still a bit new to non-top 3 popular languages)
Haskell, because complex haskell code feels more human than other languages', and with the ffi you can di some serious shit. I've doing WoW hacks and bots for linux with haskell for about a year and I love it
It's bait. If you're curious run some benchmarks.
It's obviously made by a rust shill. Rust is neither "fast" as C nor as "safe" as Haskell.
figured as much
>memeing about math
this is why we cant have nice things
retards believe anything they find on the interwebs, dont spread some bullshit like that
i forgot LISP, i always wanted to learn some LISP dialect
If someone believes they can't do x because they don't know y then who needs them
This obviously written by a CHaskell shill
> putting rust as better performing than c++
Haskell if you want to be part of the unemployed elite, Rust if you want practical skills and employability outside of web development, Go if you want to join the newest retarded cult around a shitty programming language (see also: Python).
Rust if you want to work in an office primarily filled with trannies.
Explain this.
>I should mention I have experience in Java, C, JavaScript. Not much Python.
Go pick up "Type-Driven Development with Idris".
The lessons on typing will stick with you for a lifetime.
>employable
>fun/interesting
>pick one
1. out of hipster languages, go because it has the largest market share and projects, and is straightforward for getting shit done
2. its between go unless i need something lower level then rust
holy shit guiz its someone whos written ur
those benchmarks should be taken with a pile of salt, but a very rough indicator of performance
If you can't see for yourself, here I'll spell it out for you: C worst performance is best of Rust
>have a 1 night stand with go
>have a summer fling fucking around with rust
>get married and have babies with Haskell
Not sure how Clang compares to GCC, but last I heard, it's slower. Is this related to LLVM?
The only way I could see Rust getting faster than C is if type info were somehow used to perform really gnarly optimizations based on interprocedural control flow and numerical analysis. C maps so directly into assembly for the most part that it's hard to outdo with regard to speed.
The whole point of Rust was to make something that is comparable to idiomatic C++ in performance and both safe and easy to deploy.
All PLs are shit. Write your own.
>someone whos written ur
Cannot pass up on the opportunity to share my experiences with/shill for Ur/Web like the shameless PL hooker I am. It was memed at OPLSS by several students one year and resolved to try it.
It was simultaneously one of the most frustrating and mind-blowing experiences I've had programming. In the way Haskell feels like it differs from most languages, Ur seems to differ from everything else I've tried.
I had previous experience in some web dev as well as SQL, ML and Haskell. I also had some experience reading operational semantics rules in Gentzen style. Not a good place to start a type-theoretic language binge desu (you really need to learn the things I mentioned first), but an okay play to take one. You don't needs a Fields medal-tier intellect or bullshit, but you do need background. Here's a primer on reading those semantic rules/PL papers that isn't Rick and Morty fan-tier obnoxious:
youtube.com
Back to Ur. It has a signature system like ML's and a typeclass and monad system like Haskell's for managing effects and constraints.
It adds to this a higher-kinded type system with dependent types for making fields of data structures checkable at compile time. You have to think about how the types of SQL records (where names of fields are parts of the type) will harmonize with things you'll display and render.
As a research project, its libraries are not well-documented. Its compiler feels like an alient artifact translated into English automatically: a pain in a way that could be improved with effort if more than a dozen people ever used it. I learned it by RTFM, looking at the demos on the internet, and studying other projects built with it. That gave me enough to build a rudimentary image board.
I'd totally use it again, but only for a project that was solo or with a few high-test PL people with super saiyan type theory aspergers. It's the opposite of suitable for enterprise/onboarding.
Making your own language is actually good pedagogical advice, but for chrissakes learn just a little type theory first (yes, EVEN IF you're doing a dynamic/unityped language) so you don't reinvent Emacs Lisp and do pleb-tier shit like get lexical scoping wrong or fail to treat multiple arguments as a form of product type.
Pic related is suitable reading material. You don't have to read all of either. Just get the basics down and keep it as a reference.
>memes
TaPL is certainly a meme book. What about the other?
Lots of overlap, but it's newer. Robert Harper. Like TaPL, PFPL sets up a bunch of stuff on conventional types. Where TaPL has lots of material on ML implementations and decidability of properties of various features, PFPL goes into things like module systems, concurrency, concurrency, parallelism, etc. It's arguably a somewhat more advanced book that's a bit less implementation focused. Here's a free preview:
cs.cmu.edu
The whole book is overkill for many purposes. The parts on sums, products, binding trees, and dynamic typing should guide any basic language implementation though.
Rust
elm.js
It's not hard to affect change.
I write purely functional scala every day. It's trivial.
Is this graphic true? I always thought go had better performance. What about Perl, ruby and python then?
>1. Making yourself more employable
Go, I guess. It's a brain-dead shit, but it can get you employed.
>2. Fucking around with a fun and interesting language
Haskell, it's the best language to teach yourself something new.
But since I'm already employed C++ programmer and have some experience with Haskell, and I want to combine the best parts from both, I use Rust for my personal projects.
Performance-wise, C < C++ < Rust < Go < Java < Haskell < Perl < Python < Ruby:
benchmarksgame.alioth.debian.org
Thanks, checking it out.
I looked into it 1.5 years ago, the specs look insane, but I didn't feel it was worth the time to play with
It's the other way around
Bargaining itt.
FTFY
C++ is just as safe, if not more safe, than Rust. Just because you label your "unsafe" constructs unsafe doesn't make the language safer you fucking monkeys.
Mozilla foundation shilling team in this thread.
>1% unsafe code is the same as 100% unsafe code
Literally cannot tell if this is a troll or a no-shit C++ flat-earther.
Type safety is a formal property of a language. Type-safe programs do not crash. Rust programs cannot crash. C++ programs can. It's literally that fucking simple.
inb4 guh just use C++17 because there is no clean line separating the new shit from the old and even new shit can crash if you invalidate pointers.
If you have a terribly good reason to use unsafe blocks, within them, you basically turn Rust into C++ with a more sensible set of conventions and a better package manager. No rustfag with any sense does this unless they have an excellent reason to.
> inb4 runfags are all brainlets. I don't think a typical C++ user could write a Rust program that compiled if their life depended on it.
I also continue to be amazed at all the mouth-breathers who suggest ML is less safe than Java when the type safety of Standard ML is a theorem proved in the document defining it and ML programs cannot null ref or suffer any other non-recoverable runtime error.
This makes no sense.
How is Rust twice as save as Java?
Rust allows you to screw with your memory, Java is ALWAYS garbage collected.
fanboy/10, would not try
Type safety is nice, but what if you get an I/O problem and have corrupted data?
It blows up in your face.
Picture related.
>CS Major: Scheme
What is this, the 80s?
>How is Rust twice as save as Java?
It's not. Languages are either type-safe or not.
Rust is type safe. Java is not.
> I/O problem
If I understand you, that's a problem with the system, not the program.
If you mean invalid I/O is sent to the Rust program, then unless there are unsafe blocks, it still won't crash.
fixed
Java, Go, C++
Why is Ada so hard to deal with? Isn't it supposed to be safe and easy? Instead I spent the whole day figuring out array slices.
Delusional. It's significantly slower than C/C++/Rust and less safe than Rust, unless you're using SPARK, but that's a completely different story.
1. Go, but also Rust.
2. Haskell.
Go
languages are not fun they are a tool, a hammer is not funnier than a saw
Yeah, but using Go for anything non-trivial is like building a house with a screwdriver only.
Rust's rich type system does leave a lot of room for optimization. Pointer aliasing isn't even possible in rust, yet the compiler makes no use of it.
effect* change
Yeah I am. I make $75k. I'm only a year out of school with a years experience.
I'm in Atlanta and the average here is probably around 60k for junior devs. Different parts of the country can have quite different salaries, they normally come with a higher cost of living though.
Safer actually.
>(((GC)))
>FTFY
>it's completely wrong
>while the original was pretty accurate
javascript: fuck you
>Pointer aliasing isn't even possible in rust
can't you have aliased non-mutable pointers?