Started restoring some old images & posts; changed themes to notepadium
This commit is contained in:
@@ -20,20 +20,21 @@ compilation, namespaces, multiple return values, packages, a mostly
|
||||
sane build system, no C preprocessor, *minimal* object-oriented
|
||||
support, interfaces, anonymous functions, and closures. Those aren't
|
||||
trivialities; they're all rather great things. They're all missing in
|
||||
C and C++ (for the most part). They're all such common problems that
|
||||
nearly every "practical" C/C++ project uses a lot of ad-hoc solutions
|
||||
sitting both inside and outside the language - libraries, abuse of
|
||||
macros, more extensive code generation, lots of tooling, and a whole
|
||||
lot of "best practices" slavishly followed - to try to solve them.
|
||||
(No, I don't want to hear about how this lack of very basic features
|
||||
is actually a feature. No, I don't want to hear about how
|
||||
painstakingly fucking around with pointers is the hairshirt that we
|
||||
all must wear if we wish for our software to achieve a greater state
|
||||
of piety than is accessible to high-level languages. No, I don't want
|
||||
to hear about how ~$arbitrary_abstraction_level~ is the level that
|
||||
*real* programmers work at, any programmer who works above that level
|
||||
is a loser, and any programmer who works below that level might as
|
||||
well be building toasters. Shut up.)
|
||||
C and C++ (for the most part - excluding that C++11 has started
|
||||
incorporating some). They're all such common problems that nearly
|
||||
every "practical" C/C++ project uses a lot of ad-hoc solutions sitting
|
||||
both inside and outside the language - libraries, abuse of macros,
|
||||
more extensive code generation, lots of tooling, and a whole lot of
|
||||
"best practices" slavishly followed - to try to solve them. (No, I
|
||||
don't want to hear about how this lack of very basic features is
|
||||
actually a feature. No, I don't want to hear about how painstakingly
|
||||
fucking around with pointers is the hairshirt that we all must wear if
|
||||
we wish for our software to achieve a greater state of piety than is
|
||||
accessible to high-level languages. No, I don't want to hear about
|
||||
how ~$arbitrary_abstraction_level~ is the level that *real*
|
||||
programmers work at, any programmer who works above that level is a
|
||||
loser, and any programmer who works below that level might as well be
|
||||
building toasters. Shut up.)
|
||||
|
||||
I'm a functional programming nerd. I just happen to also have a lot of
|
||||
experience being knee-deep in C and C++ code. I'm looking at Go from
|
||||
@@ -53,13 +54,12 @@ less transparently.
|
||||
|
||||
Concurrency was made a central aim in this language. If you've not
|
||||
watched Rob Pike's [[https://blog.golang.org/concurrency-is-not-parallelism][Concurrency is not parallelism]] talk, go do it now.
|
||||
While it's perhaps not my favorite approach to concurrency. While I
|
||||
may not be a fan of the style of concurrency that it uses (based on
|
||||
[[https://en.wikipedia.org/wiki/Communicating_sequential_processes][CSP]] rather than the more Erlang-ian message passing), this is still a
|
||||
far superior style to the very popular concurrency paradigm of
|
||||
Concurrency Is Easy, We'll Just Ignore It Now and Duct-Tape the
|
||||
Support On Later. [[http://jordanorelli.com/post/31533769172/why-i-went-from-python-to-go-and-not-nodejs][Why I went from Python to Go (and not node.js)]], in
|
||||
my opinion, is spot-on.
|
||||
While I may not be a fan of the style of concurrency that it uses
|
||||
(based on [[https://en.wikipedia.org/wiki/Communicating_sequential_processes][CSP]] rather than the more Erlang-ian message passing), this
|
||||
is still a far superior style to the very popular concurrency paradigm
|
||||
of Concurrency Is Easy, We'll Just Ignore It Now and Duct-Tape the
|
||||
Support On Later, How Hard Could It Possibly Be. [[http://jordanorelli.com/post/31533769172/why-i-went-from-python-to-go-and-not-nodejs][Why I went from
|
||||
Python to Go (and not node.js)]], in my opinion, is spot-on.
|
||||
|
||||
Many packages are available for it, and from all I've seen, they are
|
||||
sensible packages - not [[https://www.reddit.com/r/programming/comments/4bjss2/an_11_line_npm_package_called_leftpad_with_only/][leftpad]]-style idiocy. I'm sure that if I look
|
||||
@@ -92,7 +92,11 @@ system is also still very limited - particularly, things like the lack
|
||||
of any parametric polymorphism. I'd probably prefer something more
|
||||
like in [[https://www.rust-lang.org][Rust]]. I know this was largely intentional as well: Go was
|
||||
designed for people who don't want a more powerful type system, but do
|
||||
want types.
|
||||
want types, and further, to support this kind of polymorphism involves
|
||||
tradeoffs it looks like they were avoiding, like those Russ Cox gives
|
||||
in [[https://research.swtch.com/generic][The Generic Dilemma]]. (Later note: the [[https://github.com/golang/proposal/blob/master/design/go2draft-contracts.md][Contracts - Draft Design]]
|
||||
proposal for Go 2 offers a possible approach for parametric
|
||||
polymorphism.)
|
||||
|
||||
My objections aren't unique. [[https://www.teamten.com/lawrence/writings/why-i-dont-like-go.html][Ten Reasons Why I Don't Like Golang]] and
|
||||
[[http://yager.io/programming/go.html][Why Go Is Not Good]] have criticisms I can't really disagree with.
|
||||
|
||||
Reference in New Issue
Block a user