开源软件名称: ksimka/go-is-not-good开源软件地址: https://github.com/ksimka/go-is-not-good开源编程语言:
Go
96.5%
开源软件介绍: What's this
This repository is a list of articles that complain about golang 's imperfection.
Motivation
Seems like complaining about go 's flaws is becoming a trend. Any newbie must have a chance to read all the go -is-bad arguments before they go too far. So here it is.
What it's for
This repo is not aimed to offend or insult someone (at least not more than each author does it in its article), especially golang itself, its authors and the community. It is for educational purpose only. Any contributor can have an absolutely different point of view.
I don't think anyone would deny that go has weaknesses: it certainly has. But how do you know, is it really a language design flaw or is it just you, doing something completely wrong ? This list here to help you quickly answer the question.
How to use it
You're writing some code. And suddenly you understand you need something that language can't give you. You go here and check if you're the one with that issue or not. If it's a common issue, it'll be here. Then you decide what to do: choose another tool for your task or go find a better solution or a workaround.
The List
https://cowlark.com/2009-11-15-go/ (David Given, 2009)
c-style
poor design
no constructors
no user-type iteration
new
and make
instead of one
stuck in 70's
no OOP
too simple / lack of syntactic sugar
https://dzone.com/articles/i-don%E2%80%99t-much-get-go (Jon Davis, 2010)
no language interoperability (only C)
no versioning model
no OOP
has pointers
no semicolons at line endings
no this
no function/operator overloading
no exceptions
https://uberpython.wordpress.com/2012/09/23/why-im-not-leaving-python-for-go/ (Yuval Greenfield, 2012)
error handling
stuck in 70's
panic
instead of exceptions
http://www.darkcoding.net/software/go-lang-after-four-months/ (Graham King, 2012)
un-googlable name
stuck in 70's
no exceptions
is compiled
too young
http://ridiculousfish.com/blog/posts/go_bloviations.html (ridiculousfish, 2012)
c-style
no unused imports
bad unicode support
no asserts
http://magicmakerman.blogspot.ru/2013/07/why-googles-go-programming-language.html (Magic Maker Man, 2013)
no OOP
no asserts
has pointers
weird mascot (gopher)
http://how-bazaar.blogspot.ru/2013/04/the-go-language-my-thoughts.html (Tim Penhey, 2013)
error handling
inconvenient range
no generics
http://corte.si/posts/code/go/go-rant.html (Aldo Cortesi, 2013)
http://blog.mattbasta.com/things_that_make_me_sad_in_go.html (Matt Basta, 2014)
project layout is bad
can't import packages relatively
different build approaches
no sugar for slices
lack of basic data structures
https://rule1.quora.com/Golang-Not-yet (Jordan Zimmerman, 2014)
no decent IDE
GOPATH is a mess
pointers are a mess
upper-case/lower-case scoping is bad
hidden types
immature GC
hard to extend
no exceptions
no generics
bad dependency management
http://yager.io/programming/go.html (Will Yager, 2014)
no generics
no function/operator overloading
nil as a failure marker
type inference is too simple
no immutables
no pattern matching
https://www.upguard.com/blog/our-experience-with-golang (Mark Sheahan, 2014)
no decent IDE
error handling
unexpected variable shadowing
no generics
not-so-obvious slices behaviour
http://dtrace.org/blogs/wesolows/2014/12/29/golang-is-trash/ (Keith Wesolowski, 2014)
the worst compiler toolchain ever
psuedointellectual arrogance of Rob Pike and everything he stands for
confusing and undebuggable
http://www.yinwang.org/blog-cn/2014/04/18/golang (Wang Yin, 2014)
confusing/stupid syntax
immature toolchain
immature GC
no generics
multiple return values have no type checking
cumbersome interface
goroutine is not original and revolutionary
defer is abused
stuck in Unix thinking
summary: not elegant as Python, not strong as Java
https://kaushalsubedi.com/blog/2015/11/10/golang-sucks-heres-why/ (Kaushal Subedi, 2015)
no generics
slow json parsing
bad dependency management
no subpackages
http://spaces-vs-tabs.com/4-weeks-of-golang-the-good-the-bad-and-the-ugly/ (Freddy Rangel, 2015)
not-so-obvious slices behaviour
error handling
hard to test, hard to mock
http://www.evanmiller.org/four-days-of-go.html (Evan Miller, 2015)
no unused imports
too opinionated
poor std math lib
weird mascot (gopher)
http://nomad.so/2015/03/why-gos-design-is-a-disservice-to-intelligent-programmers/ (Gary Willoughby, 2015)
too simple / lack of syntactic sugar
no generics
bad dependency management
stuck in 70's
http://tmikov.blogspot.com/2015/02/you-dont-like-googles-go-because-you.html (Tzvetan Mikov, 2015)
designed for stupid people
too verbose
no ternary operator
no macros or templates
can't change hash function in maps
unwieldy to code new collections
no function overloading
can't declare/validate implements interface
no virtual functions
case defined exports is bad
http://valuedrivenit.blogspot.ru/2015/12/to-go-language-is-mess.html (Cliff Berg, 2015)
un-googlable name
confusing/stupid syntax
polymorphism is broken
compilation rules are too confining
designed for stupid people
package mechanism is broken
http://blog.goodstuff.im/golang (David Pollak, 2015)
no immutables
too simple / lack of syntactic sugar
confusing/stupid syntax
too opinionated
error handling
stuck in 70's
no generics
upper-case/lower-case scoping is bad
no map
/reduce
/filter
http://byrd.im/go-is-poor/ (Ian Byrd, 2015)
not-so-obvious slices behaviour
nil interfaces are not entirely nil
unexpected variable shadowing
no first-class support of interfaces
questionable compiler rigidity
go generate is a quirk
https://blog.plan99.net/modern-garbage-collection-911ef4f8bd8e#.62yek82xg (Mike Hearn, 2016)
misleading marketing around garbage collector
garbage collector is nothing new; concurrent mark/sweep from the '70s
garbage collector requires implicit (hidden) tradeoffs
garbage collector optimized for pause times at the cost of other desirable gc features
http://www.jtolds.com/writing/2016/03/go-channels-are-bad-and-you-should-feel-bad/ (JT Olds, 2016)
channels are slow
channel API is inconsistent
https://medium.com/@rgausnet/3-reasons-why-go-isnt-the-perfect-language-yet-25e0da5ec04c (Ryan Gaus, 2016)
not stable
no map
/reduce
/filter
bad dependency management
https://www.teamten.com/lawrence/writings/why-i-dont-like-go.html (Lawrence Kesteloot, 2016)
upper-case/lower-case scoping is bad
case defined exports is bad
no first-class support of interfaces
no exceptions
difficult to generate code automatically
no ternary operator
sort.Interface approach is clumsy
no versioning model
import-based vendoring is terrible
no generics
https://awalterschulze.github.io/blog/post/sum-types-over-multiple-returns/ (Walter Schulze, 2017)
no sum types
no algebraic data types
multiple return parameters are overrated
http://sitr.us/2017/02/21/changes-i-would-make-to-go.html (Jesse Hallett, 2017)
no non-nullable types
error handling
no generics
no tagged unions
no first-class tuple
concurrency and parallelism are mixed
https://grimoire.ca/dev/go (Owen Jacobson, 2018)
hostile to developer ergonomics
too opinionated
package mechanism is broken
GOPATH is a mess
error handling
Reverse complaints index
It's a reverse complaints index, generated by https://github.com/ksimka/go-is-not-good/blob/master/generator.go (thanks to @capoferro)
GOPATH is a mess
new
and make
instead of one
panic
instead of exceptions
bad dependency management
bad unicode support
c-style
can't change hash function in maps
can't declare/validate implements interface
can't import packages relatively
case defined exports is bad
channel API is inconsistent
channels are slow
compilation rules are too confining
concurrency and parallelism are mixed
confusing and undebuggable
confusing/stupid syntax
cumbersome interface
defer is abused
designed for stupid people
different build approaches
difficult to generate code automatically
error handling
garbage collector is nothing new; concurrent mark/sweep from the '70s
garbage collector optimized for pause times at the cost of other desirable gc features
garbage collector requires implicit (hidden) tradeoffs
go generate is a quirk
goroutine is not original and revolutionary
hard to extend
hard to test, hard to mock
has pointers
hidden types
hostile to developer ergonomics
immature GC
immature toolchain
import-based vendoring is terrible
inconvenient range
is compiled
lack of basic data structures
misleading marketing around garbage collector
multiple return parameters are overrated
multiple return values have no type checking
nil as a failure marker
nil interfaces are not entirely nil
no OOP
no map
/reduce
/filter
no this
no algebraic data types
no asserts
no constructors
no decent IDE
no exceptions
no first-class support of interfaces
no first-class tuple
no function overloading
no function/operator overloading
no generics
no immutables
no language interoperability (only C)
no macros or templates
no non-nullable types
no pattern matching
no semicolons at line endings
no subpackages
no sugar for slices
no sum types
no tagged unions
no ternary operator
no unused imports
no user-type iteration
no versioning model
no virtual functions
not stable
not-so-obvious slices behaviour
package mechanism is broken
pointers are a mess
polymorphism is broken
poor design
poor std math lib
project layout is bad
psuedointellectual arrogance of Rob Pike and everything he stands for
questionable compiler rigidity
slow json parsing
sort.Interface approach is clumsy
stuck in 70's
stuck in Unix thinking
summary: not elegant as Python, not strong as Java
the worst compiler toolchain ever
too opinionated
too simple / lack of syntactic sugar
too verbose
too young
type inference is too simple
un-googlable name
unexpected variable shadowing
unwieldy to code new collections
upper-case/lower-case scoping is bad
weird mascot (gopher)
Get involved
Feel free to add a PR with a new or old article you found on the internet. The structure is simple, just look at existing entries. Run make
and check in the resulting README.md
along with your updated entries.json
.
{
"URL" : " https://kaushalsubedi.com/blog/2015/11/10/golang-sucks-heres-why/" ,
"Author" : " Kaushal Subedi" ,
"Year" : 2015 ,
"Complaints" :[
" no generics" ,
" slow json parsing" ,
" bad dependency management" ,
" no subpackages"
]
}
TODO
merge complaints with the same ideas under the same names (make the complaints list smaller)
sort reverse index by the number of articles which have that complain (popular complains to the top)
请发表评论