If I was unclear...I do not mean that Go is the ultimate answer to those questions, or that D (or whatever) is the anthesis of them. I wish Go was different in various ways too.
On Wed, Aug 2, 2017 at 8:39 AM, <eric.pel...@gmail.com> wrote: > I'm still not convinced that using a language which is especially limited > by design always helps in implementing the simplest solution, that will be > the easiest to maintain. > > Maybe it's the case most of the time, but from my personal experience, you > can only get that result by using the right tool for the right job. > > And by "right" I mean the simplest tool which gets you the right result. > > Fortunately, that doesn't happen all the time, but sometimes Go doesn't > give gou that simplest tool, and in that case I severely regret I wasn't > trusted enough so that they let me choose that appropriate tool. > > Le mercredi 2 août 2017 15:26:09 UTC+1, Michael Jones a écrit : >> >> I've often found it helpful to consider extreme limit cases. >> >> In solo/school/hobby programming, you code and test more than you debug >> and you understand intent implicitly because you are coding it as you go. >> As a professional at work, as part of a team, in a code review regime, >> using third-party libraries, evolving large systems, the time distribution >> between coding, testing, debugging, and understanding are different. What >> is the limit case? >> >> The (hypothetical) limit would be no coding and all testing, debugging, >> and understanding. Make it theatrical--the meteor will destroy the Earth >> unless you alone can find the bugs in the billion-line space shield >> software system during the next few days or hours. Now, in such a case, >> think what language and ecosystem features might be helpful. Which are >> neutral? Which might hurt? >> >> I have my own answers, but I raise this to encourage to consider the >> question for themselves. If you do, I expect that you'll see matters at >> issue from a different point of view, from a new perspective that will >> bring a different concept of value. Even though the situation is rather >> extreme, it has much in common with most programming in the large. >> >> On Wed, Aug 2, 2017 at 3:43 AM Egon <egon...@gmail.com> wrote: >> >>> Yes, I would agree -- the type declarations won't bother you in >>> real-world, because when they become unreadable, then you would use >>> additional types to clarify them... in any language. >>> >>> *And, I have nothing against either languages -- I used D in my BSc >>> thesis and Go in my MSc thesis.* >>> >>> The main difference, as I see, is that Go is much more restricted, which >>> means you have to work harder to fit your code into that model, leading to >>> better structures overall. Over time you will learn the simpler ways of >>> structuring your code. With D you have a tons of flexibility, which means >>> often your first idea, what to write, succeeds -- which means the design >>> will be less polished. Also this means that you won't tacitly learn to >>> simplify your code. >>> >>> Yes, you can also write as simple code in D as in Go; the caveat is that >>> Go forces you more into that direction... at the cost of flexibility of the >>> language. So you can write more complex and complected code in D -- for >>> better and worse. >>> >>> + Egon >>> >>> On Wednesday, 2 August 2017 13:25:06 UTC+3, ecstati...@gmail.com wrote: >>>> >>>> Ok I understand you now. Maybe I'm biased because I like both >>>> languages, but I'm not convinced that this example illustrates well Go's >>>> simplicity compared to D. >>>> >>>> For 99% of my *personal* daily use of both languages, very honestly, >>>> I've never felt that using types, functions, arrays, etc etc was simpler in >>>> Go compared to D. >>>> >>>> Even for more complex stuff like concurrency, I think that both >>>> languages still remain quite close, despite I think that Go's channel >>>> system is the best approach to the problem. >>>> >>>> On Wednesday, August 2, 2017 at 10:33:03 AM UTC+1, Egon wrote: >>>>> >>>>> The example contained 3 versions, C, D and Go. >>>>> >>>>> function pointer tables aren't that uncommon, maybe the []error part >>>>> is uncommon >>>>> >>>>> Examples from real world code: >>>>> >>>>> https://github.com/egonelbre/fedwiki/blob/master/action.go#L59 >>>>> https://github.com/ethereum/go-ethereum/blob/master/crypto/ >>>>> sha3/sha3_test.go#L40 >>>>> https://github.com/jteeuwen/go-bindata/blob/master/testdata/ >>>>> out/compress-memcopy.go#L205 >>>>> https://github.com/golang/net/blob/master/proxy/proxy.go#L57 >>>>> https://github.com/golang/go/blob/master/src/cmd/vet/main.go#L150 >>>>> https://github.com/golang/go/blob/master/src/net/http/server.go#L2391 >>>>> https://github.com/golang/go/blob/master/src/cmd/compile/main.go#L23 >>>>> >>>>> And I've used it in Go, Java, C#, JavaScript, Delphi, C... >>>>> >>>>> The main reason you don't see these one-liners often in C, D et. al. >>>>> is because they are hard to read. >>>>> >>>>> For common C, C++ examples, see signal and interrupt vector tables. >>>>> >>>>> On Wednesday, 2 August 2017 12:05:43 UTC+3, ecstati...@gmail.com >>>>> wrote: >>>>>> >>>>>> Still waiting the Go version of this very useful D code... >>>>>> >>>>>> I'm not asking you to browse the web to find to find most complex >>>>>> declaration you can ever do in D, Go or C++ for instance. >>>>>> >>>>>> I've never used such ridiculous code in my Go/D/C++/Java/C# >>>>>> applications, and neither will you. >>>>>> >>>>>> I'm just asking you show me how *simple* code in Go will become much >>>>>> more complicated in D, as this is what you seem to think. >>>>>> >>>>>> And I mean something we will all use all day long (ex: declaring or >>>>>> using functions/types/arrays/slices/references/loops/etc etc), not >>>>>> the most complicated code you can come up with. >>>>>> >>>>>> THAT would be useful, and also a fair comparison between both >>>>>> languages. >>>>>> >>>>>> Because from what I see below, I may think you couldn't manage to >>>>>> find such an example >>>>>> >>>>>> But maybe I'm wrong, I don't know... >>>>>> >>>>>> On Wednesday, August 2, 2017 at 9:33:48 AM UTC+1, Egon wrote: >>>>>>> >>>>>>> On Wednesday, 2 August 2017 10:51:43 UTC+3, ecstati...@gmail.com >>>>>>> wrote: >>>>>>>> >>>>>>>> For all the common parts with Go (functions, methods, reference >>>>>>>> classes, strings, arrays, slices, ranges, foreach, etc), honestly I >>>>>>>> don't >>>>>>>> know why you say it's simpler in Go. >>>>>>>> >>>>>>>> Can you show me two examples of code side by side, and tell me >>>>>>>> "look how much simpler it's with Go's" ? >>>>>>>> >>>>>>>> Because from what I read, I'm sometimes wondering if you really >>>>>>>> know that the type declarations in D are MUCH simpler than in C/C++. >>>>>>>> >>>>>>> >>>>>>> error* (**callbacks)(int); >>>>>>> >>>>>>> Error[] function(int)[][string] callbacks; >>>>>>> >>>>>>> var callbacks map[string]func(int) []error >>>>>>> >>>>>>> >>>>>>>> For instance : >>>>>>>> >>>>>>>> int[] >>>>>>>> first_array_of_ints, >>>>>>>> second_array_of_ints; >>>>>>>> >>>>>>>> int[string] >>>>>>>> first_map_of_ints_indexed_by_a_string, >>>>>>>> second_map_of_ints_indexed_by_a_string; >>>>>>>> >>>>>>>> TYPE >>>>>>>> first_reference_to_an_object_of_this_type, >>>>>>>> second_reference_to_an_object_of_this_type; >>>>>>>> >>>>>>>> So, with all due respect, how many applications have you already >>>>>>>> programmed in D before telling me that Go's syntax is so simpler to >>>>>>>> use and >>>>>>>> to learn ? >>>>>>>> >>>>>>>> I agree there are much *less* possibilities in Go, but that >>>>>>>> doesn't mean it's automatically a simpler language to learn for all the >>>>>>>> common parts with D. Seriously. >>>>>>>> >>>>>>>> Because I had to learn both, and at least for a C++/Java/C# >>>>>>>> programmer like me, D transition was almost immediate, really a matter >>>>>>>> of >>>>>>>> hours to become comfortable with the language. Everything was alike, >>>>>>>> but >>>>>>>> much simpler and easier than in C++. >>>>>>>> >>>>>>>> Believe me or not, I've taught programming with D to my two >>>>>>>> teenagers with D. Really. >>>>>>>> >>>>>>>> I've chosen it because it was the only strongly-typed language >>>>>>>> close to Javascript that was really easy to learn, while allowing them >>>>>>>> to >>>>>>>> quickly switch to C++, Java or C# later if they wanted to. >>>>>>>> >>>>>>>> Go is much simpler than C++ too, I agree of course, but for having >>>>>>>> learned both Go then D, again from the point of view of a former >>>>>>>> C++/Java/C# programmer like me, I didn't feel that quickly at home >>>>>>>> with Go >>>>>>>> than with D, mainly because Go diverged much more from its predecessors >>>>>>>> than D from a syntactic point of view. >>>>>>>> >>>>>>>> So, again from a syntactic point of view, I don't think how you can >>>>>>>> affirm that it's much easier in Go than in D to declare and use types, >>>>>>>> references, functions, methods, slices, arrays, foreach, and all the >>>>>>>> common >>>>>>>> stuff between both languages. >>>>>>>> >>>>>>>> Honestly, no offense intended. >>>>>>>> >>>>>>>> On Tuesday, August 1, 2017 at 10:11:10 PM UTC+1, Doğan Kurt wrote: >>>>>>>>> >>>>>>>>> But from my personal experience, D is *at least* as easy to learn >>>>>>>>>> than Go, if not easier. >>>>>>>>> >>>>>>>>> >>>>>>>>> I seriously doubt, no offense. Go is so small and so intuitive, >>>>>>>>> one can argue that there are people out there who knows most of the Go >>>>>>>>> unknowingly :) >>>>>>>>> >>>>>>>>> Just the fact that it doesn't break much with the familiar syntax >>>>>>>>>> of C#, Java, C++, etc helps a lot in making the transition. >>>>>>>>>> >>>>>>>>> >>>>>>>>> Go's syntax is very familiar to C, i've never heard it was an >>>>>>>>> issue. The only think you must get used to is declarations and i LOVE >>>>>>>>> the >>>>>>>>> Go way. I remember the days i was struggling with C's declaration >>>>>>>>> model, >>>>>>>>> the spiral rule etc. sure we use typedefs but it rather feels like a >>>>>>>>> hack. >>>>>>>>> I can write any declaration no matter how complex it is, with my >>>>>>>>> eyes closed in Go. It's so great. >>>>>>>>> >>>>>>>>> And genericity and polymorphism are invaluable tools when >>>>>>>>>> optimizing code reuse without reducing execution speed. >>>>>>>>>> >>>>>>>>> >>>>>>>>> I don't ever remember duplicating any code in C. I can't >>>>>>>>> understand how people are unable to write reusable code with C, >>>>>>>>> seriously. >>>>>>>>> Whenever i discuss this with a C++ programmer, they immediately share >>>>>>>>> some >>>>>>>>> generic Max function that works with int and double. I admit i use >>>>>>>>> macros >>>>>>>>> in that case, but come on it's not even 1% of the serious programming >>>>>>>>> you >>>>>>>>> do in C. >>>>>>>>> >>>>>>>>> If you are a competent C programmer (structured programming in >>>>>>>>> general), you know how to write reusable code. >>>>>>>>> >>>>>>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "golang-nuts" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to golang-nuts...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- >> Michael T. Jones >> michae...@gmail.com >> > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- Michael T. Jones michael.jo...@gmail.com -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.