Git Product home page Git Product logo

go-is-not-good's People

Contributors

aguthrie avatar awalterschulze avatar capoferro avatar ccraciun avatar dane-johnson avatar danidee10 avatar ksimka avatar malgirl avatar maxcountryman avatar randgalt avatar takeyourhatoff avatar udhos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

go-is-not-good's Issues

tags are arbitrary strings, no compiler checked syntax

Pop quiz. What's wrong with this:

``json:"foo.omitempty"`

The language should have put some structure on tags. Instead of opening a loophole where weird syntax can be added and conventional values are not checked. The compiler or linter should have at least warned that there's a period where a comma should be.

this-repo-not-so-good

95% of the articles are from a decade ago, most written after golang was a few years old. Quite a few items have been fixed. Not saying golang is perfect but if there's going to be a repo bashing a language at least keep it updated with relevant articles.

What about Hacker News comments?

Is it fair game to add summaries of comments on Hacker News?

Probably a bad idea. Idea that may be better: someone write some Big Data Machine Learning Cloud Based Neural Network parser that looks through HN comments and infers the gist of all the negative comments about Go, compiles and scores them, etc.

Write it in Go, of course.

http://byrd.im/go-is-poor/

-Go is a poorly designed language

  • Slice manipulations are broken
  • Sometimes nil interfaces are not entirely nil
  • Funny variable shadowing
  • No first-class support for interfaces
  • Questionable compiler rigidity
  • Go generate is a quirk

Author: Ian Byrd

We must be careful when we use interface{}

func MyFunc(obj interface{}) {
    obj = "123"
    fmt.Println(obj)
}

func main() {
    var s string = "hello"
    MyFunc(s)
    fmt.Println(s)
    MyFunc(&s)
    fmt.Println(s)
}

The parameter of interface{} can be assigned by a normal type or by a pointer. That means:

  1. If we want to change the value by passing parameter, we must be careful while coding, because what we need is MyFunc(&s) but MyFunc(s) won't cause any error.
  2. If we do not want to change the value while passing parameter, we must be careful while coding, because what we need is MyFunc(s), but MyFunc(&s) won't cause any error.

This kind of "freedom" is not C-style freedom at all, let me explain:

void swap(int a, int b)  // Oops, this function can't swap a and b actually...
{
    int tmp = a;
    a = b;
    b = tmp;
}

A C beginner may code as above, that's because this beginner don't know C very well.

A Go expert may code MyFunc(s) but what he really needs is MyFunc(&s). This expert knows everything about Go, but he still can make such a mistake accidentally only because he is tired, or his girlfriend just called him etc...

Or let's imagine that MyFunc(interface{}) is a third-party library, there is no way to force the user of the library to call the method by MyFunc(&s), instead of MyFunc(s). But if this is a C library, if you try to call the function swap(a, b), you must get an error because this function is defined as swap(int *, int *). You don't need to be careful while coding C.

In a word, for C, we say you must learn a lot to avoid some mistakes. But for Go, we say you must be careful to avoid some mistakes.

This kind of "freedom" makes Go like a "stupid bady".

How do we correct misunderstandings/lack of knowledge?

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.

What if it's common to do something in Go incorrectly, and that's what people are complaining about? This would be a great venue to teach people the better way, perhaps by adding links or comments just after certain complaints. Will you accept PRs that help clarify such issues? Thanks.

Still maintained?

Seeing how Go is thriving nowadays and how few new resource this repository is getting, maybe it's time to find a new maintainer or just archive/delete it, thanks.

I volunteer! 😄

Rid ad hominem

Yo, the list is cool, but, maybe let’s consider removing the «for stupid people» parts? I can’t see offending being beneficial to the discourse in any way—especially to converting the Go crowd.

There is a way to communicate the most powerful truths and ideas to people.

Often this requires speaking no ill of the people in question.

https://twitter.com/devslashdavid/status/775142439996760064

Complaints index by age

Hi,

Please add complaints index by age of complaints ordered from early to last recent complaints.
This will allow you to see the progress of language development

Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.