[svlug] Finally got rid of that annoying gnome feature, known as hot corner
shaeffer at neuralscape.com
Thu Nov 26 13:59:01 PST 2015
On Thu, Nov 26, 2015 at 06:14:10PM +0000, Karen Shaeffer wrote:
> On Tue, Nov 24, 2015 at 04:55:42AM +0000, Karen Shaeffer wrote:
> > On Mon, Nov 23, 2015 at 08:58:51PM -0700, Jesse Monroy wrote:
> > > As for C++, it is preparing it's own abortion. (don't get me started ;-) )
> > >
> > > Jesse
> > Hi Jesse,
> > I realize M$ has muddied the waters in the context of C++. But I believe C++
> > is a beautiful language that has incredible expressive capacity builtin. Many
> > folks argue that is the core problem with the language. And with C++11 and
> > now C++14, that expressive capacity has been waxing. In my eyes, this is all
> > for the better. I see all that expressive capacity as giving the author great
> > flexibility in how they implement their creations. And, sure, it brings with
> > it a significant barrier to entry in the learning curve. And, to the novice,
> > all the expressive capacity can seem like a curse. But it is all worth it,
> > once you get past those early problems.
> Hi Jesse,
> On a more particular and constructive note, C++ is a very difficult language
> to use, until you come to realize the language and its usage are intricately
> related to types. In effective use of C++, simple problem domains are modeled
> by a type. More complex problem domains are modeled by a constellation of
> interactive types or a hierarchy of types or a hybrid of the two. In designing
> types, one pays close attention to concepts that a type must satisfy:
> And these concepts can be checked by the type traits.
One of the problems in learning C++ on linux is g++ emits less than optimal
error messages. g++ error messages are getting much better, but they are still
way behind clang/llvm in this regard. And when learning c++, those compile time
error messages are essential to understanding what is wrong with your code.
With the release of Ubuntu 15.10 , clang/llvm works out of the box.
$ clang --version
Ubuntu clang version 3.6.2-1 (tags/RELEASE_362/final) (based on LLVM 3.6.2)
Thread model: posix
$ clang -Wall ... -std=c++14 ... -lstdc++
is a fully functional c++ tool chain, relying on libstdc++. And so you get much
more informative compile time error messages. And for non-syntax errors -- the
message is almost always about those concepts discussed above to explain why
your code won't compile. You are passing in a type that is failing to satisfy
one or more of those concepts. And it tells you which one(s). And so you now
have a very positive compile time feedback loop informing you about the nature
of the errors in your code in an easily understandable message. And you have
the knowledge and familiarity with C++ concepts as discussed above, to enable
you to resolve your current code failure and incrementally learn more about
the language and libraries in a fun and efficient process.
And so I recommend using clang for development. And testing clang compiled
binaries against g++-5.2.x compiled binaries, to see which binary realizes
better runtime performance, once you have a working code base.
 The default g++ tool chain is much improved too, fully supporting c++14
$ g++ --version
g++ (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010
Copyright (C) 2015 Free Software Foundation, Inc.
> This can be especially difficult to grasp, because most languages are not
> strongly typed. I had many years of experience using the C language, before
> focusing on C++11. Thinking of C++ as an extension of C is a painful trap you
> want to avoid. But once I finally felt comfortable with the role types play in
> the language and its use, then C++ became fun and exciting and a very powerful
> language/standard library that enables you to solve significant problems
> quickly. I believe it is a very beautiful language. One of the more interesting
> languages I have used.
Karen Shaeffer Be aware: If you see an obstacle in your path,
Neuralscape Services that obstacle is your path. Zen proverb
More information about the svlug