4 ms·
>but Go definitely reflects its time, the 2000s more like the 60s, with a primitive type system, no metaprogramming, no interactive development, etc.
by flavio81 7y ago
>but Go definitely reflects its time, the 2000s
more like the 60s, with a primitive type system, no metaprogramming, no interactive development, etc.
- baby 7y agono metaprogramming is a feature. Have you read C++ libraries?
- hechang1997 7y agoC++ template metaprogramming may be overused and very difficult to use, but its prevalence despite such difficulty precisely shows how much such a type level metaprogramming tool is desired (compared to syntax level ones like lisp macros or text level ones like C preprocessor and various code generators). New programming languages should try to improve upon C++ template metaprogramming and make more powerful and effective metaprogramming language constructs, instead of completely abandoning the front.
- mantap 7y agoThis is the putting one's head in the sand methodology of programming lanaguge design. Go's answer to metaprogramming is source code generation. There are many problems with C++ but the existence of the template system isn't one.
- acroback 7y agoFor you it isn't. But for a lot of us it is cumbersome and just plain complex.
- mantap 7y agoThe source of complexity is in the problems C++ is designed to solve. I use C++ metaprogramming for problems that require it. Sure, Boost is full of metaprogramming insanity, but with today's C++ standard library it's not necessary to use Boost. 10 years ago template heavy code in C++ did suck, because we had slow compilers, dumb build systems, 7200 rpm HDDs and a need to use Boost to augment the bare bones standard library. I'll be the first to admit that C++ has decades of cruft and design errors. But the metaprogramming works pretty well now. C++'s current problems are (IMO) weird undefined behavior, e.g. the distinction between POD and non-POD types; having both pointers and references, the ancient exception system, and in general a lack of tools for enforcing memory safety.
- lasagnaphil 7y agoC++'s template metaprogramming was "found" as an accident, and is a very bad example of metaprogramming as a whole. (Techniques like SFINAE and CRTP seem more like a hack, and leaves a bad taste in your mouth when you use it.) What we should talk about instead: hygienic macros in Scheme/Rust, AST-level modification in Nim, dependent types, etc. I think metaprogramming is an aspect of programming that should be explored more, and is definitely useful for reducing boilerplate.
- ngrilly 7y agoSure, punched cards and teleprinters were great for interactive development in the 1960s. You probably live in an alternate timeline ;)