On June 18, 2015 4:50:46 AM GMT+07:00, Lane Schwartz <[email protected]> wrote:
>C++ is a legacy programming language, built on an even older legacy
>programming language.
>
>Programming good C++ code that is readable, maintainable, and
>memory-safe
>is possible, but it requires a high degree of technical competency and
>discipline.
>
>The C++11 standard (and even more so the C++14 standard) represents a
>good-faith attempt to bring (at least some) current programming
>language
>best practices into C++. It represents an attempt to make C++ at least
>pretend to be a modern programming language that is usable without
>intimate
>knowledge of the dark arts of memory management and 30-40 years of
>backward-compatible cruft.
>
>Personally, I don't think the standards go far enough. But they are
>least a
>major step in the right direction.
>
>Use of C++11 is not avante garde. It is a very sensible move that will
>make
>it easier for new users to contribute, and make it slightly harder for
>certain types of bugs to hide.
>
>Ubuntu LTS 12.04LTS ships with gcc 4.6.3, which fully supports most
>C++11
>features; if there are actual concrete concerns about using the few
>features that aren't implemented in a five-year-old compiler, fine. But
>just remember that same five-year-old compiler can handle most C++11
>features just fine - the main reason not to use them is inertia.
>
>Unfortunately, there does not yet exist a mature general purpose
>programming language that can replace C++ for all important use cases.
>I
>have some hope, with the development of new languages like Swift, Rust,
>and
>Go, but we're not there yet.
>
>Take a look at the standard. It's not adding crazy controversial new
>things. It's mainly making C++ slightly less like living in the the
>wild
>west, and a little bit like living in the 21st century, where compilers
>can
>do sensible things like infer types some of the time.
>
>
>On Wed, Jun 17, 2015 at 2:50 PM, Ulrich Germann
><[email protected]>
>wrote:
>
>> I'd strongly advise against being too avant garde. Moses has a large
>user
>> base, and many users are still using (or have to use) stable,
>run-off-the
>> mill linux installations that are a few years old yet still
>officially
>> supported. In my opinion, our reference architecture for core moses
>> functionality should be the oldest Ubuntu LTS version still under
>official
>> support, currently Ubuntu 12.04. I have to admit that I don't keep
>track
>> closely what's happening with C++, but for me gcc-4.6 plus the boost
>> libraries still does the trick. Why the rush to the latest and
>greatest?
>> What exactly is so broken that we need C++11 to fix it?
>>
>> - Uli
>>
>> On Tue, Jun 16, 2015 at 5:02 PM, Rico Sennrich <[email protected]>
>> wrote:
>>
>>> Hi list,
>>>
>>> some code in mosesdecoder (oxlm, c++tokenizer) already requires
>c++11. To
>>> let people benefit from the usability and functionality improvements
>of
>>> c++11, it would be beneficial to allow the use of c++11 features in
>all of
>>> the code.
>>>
>>> before people start making big changes to the codebase, we should
>make
>>> sure
>>> that there are no good reasons against allowing c++11 features, such
>as
>>> lack
>>> of compiler support.
>>>
>>> I pushed a minimal commit (6c0f875) to test the waters. If this
>introduces
>>> bugs, or if users still rely on old compilers without c++11 support,
>>> please
>>> complain here.
>>>
>>> best wishes,
>>> Rico
>>>
>>> _______________________________________________
>>> Moses-support mailing list
>>> [email protected]
>>> http://mailman.mit.edu/mailman/listinfo/moses-support
>>>
>>>
>>
>>
>> --
>> Ulrich Germann
>> Senior Researcher
>> School of Informatics
>> University of Edinburgh
>>
>> _______________________________________________
>> Moses-support mailing list
>> [email protected]
>> http://mailman.mit.edu/mailman/listinfo/moses-support
>>
>>
>
>
>--
>When a place gets crowded enough to require ID's, social collapse is
>not
>far away. It is time to go elsewhere. The best thing about space
>travel
>is that it made it possible to go elsewhere.
> -- R.A. Heinlein, "Time Enough For Love"
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Moses-support mailing list
>[email protected]
>http://mailman.mit.edu/mailman/listinfo/moses-support
I agree. I'm not saying we have to rush this, but it's good to know that C++
is becoming a much easier language to use. The newer versions let you write
code that is both faster and clearer at the same time.
C++11 adds lambdas, and replaces auto_ptr with something less error-prone.
Move semantics let you design code more like you would in a garbage-collected
language. C++14 adds a standard threading interface, which could eliminate
some custom code and portability issues. It also lets you be a bit clearer
about function overriding in inheritance. C++17 is expected to have a standard
"string piece" class called string view. And so on.
Jeroen
_______________________________________________
Moses-support mailing list
[email protected]
http://mailman.mit.edu/mailman/listinfo/moses-support