Home PC Games Linux Windows Database Network Programming Server Mobile  
           
  Home \ Programming \ C ++: Postmodern systems programming language     - Oracle user lock how to know what causes (Database)

- Change CentOS 7 NIC name eno16777736 to eth0 (Linux)

- Use Android Studio and Gradle packaged multi-version APK (Programming)

- Sturdy build secure Linux server (Linux)

- Binding unofficial Google Drive and Ubuntu 14.04 LTS (Linux)

- Installing software on Ubuntu: apt-get and dpkg difference (Linux)

- Graphical development environment to build Android under Ubuntu 11.04 (Linux)

- How to deploy Icinga client (Server)

- How to prevent page five invisible killer (Linux)

- How to create an alternative Android / iOS connected wireless hotspot AP in Ubuntu 15.04 (Linux)

- How do I upgrade to Ubuntu 15.04 (Beta) (Linux)

- The Linux firewall is configured to use proxy (Linux)

- Linux firewall settings -DNS server articles (Server)

- Effective Java - lazy initialization (Programming)

- Ubuntu install VMware Workstation 11 tutorials at 14.04 / 14.10 (Linux)

- CentOS7 installation hardware monitoring for Zabbix enterprise applications (Server)

- The Definitive Guide to Linux NAT network connection (Linux)

- Linux, grep, sed usage (Linux)

- Use matplotlib scientific drawing in Linux (Linux)

- Configuration based on open source Lucene Java development environment (Server)

 
         
  C ++: Postmodern systems programming language
     
  Add Date : 2018-11-21      
         
         
         
  C ++ as a classic programming language since the eighties has been widely used in system development and high-performance computing. In recent years with the rise of a variety of programming languages ​​and paradigms, C ++ figure gradually fade out of view. But as a language continues to progress, C ++ rapid development in recent years, already has a modern language should have features, but also has many existing and ongoing new expansion.

The classic C ++

As a superset of the C language, on the one hand, C ++ integrates the advantages of C programming system, to precisely control the memory of each bit; on the other hand, provides a wealth of abstraction and programming paradigms, the introduction of object-oriented, pan type programming and functional programming style. Because of this, C ++ has a run-time performance comparable to C, on the other hand, also simplifies the C language difficult to bring the field of modeling. But because the overall design of C ++ combines a variety of styles, almost the equivalent of a huge system of nested several small language, which also makes C ++ overall ease of learning and ease of use on some bad. Meanwhile, the standard database updates to keep up with demand, such as software design Concurrency / Network and other aspects of the application layer is gradually replaced by newcomers such as Java. Furthermore, each C ++ compiler vendors to implement and not completely refer to ISO standards, but also caused a lot of cross-platform portability and compatibility issues.

Modern C ++

C ++ in recent years carried out several exploration and transformation, so that the language has become more modern features.

Resource Management

RAII (Resource Aquiration is Initialization, resource acquisition is initialization) as one of the features of C ++ is widely used in C ++ programs. RAII to control resources (including heap memory, file handles, network connections, etc.) through the heap object life cycle life cycle, so that resource management becomes more automated, but also to avoid the introduction of garbage collection caused when running burden. However, this model has a very important issue, that is, when the need to share resources, need to do more extra work to check and synchronize work.

As a more modern approach to resource management, C ++ 11 introduced two smart pointer, std :: shared_ptr and std :: unique_ptr. The former has a thread-safe reference counting, which is to control the life-cycle of resources through ownership (owenrship) transfer. C ++ 11 has also introduced rvalue references and move semantics process to avoid transfer of resources in unnecessary replication.

Similar in concept to Rust in the life cycle (Lifetime) and ownership (Ownership) of, C ++ std :: unique_ptr at the time of each transfer value will be transferred to the resource itself holds target of an assignment, combined with move semantics, the assignment further optimization of the process.

Lambda

Functor as an important component of C ++ STL, and it is in C ++ is to use a lot of features. A Functor is actually a overloaded operator () of the instance of an object class, such objects with C ++ template behavior can be seen as a simple function call, it is called Functor (functor). However, the C ++ classes and anonymous inner classes for support and not good enough to use Functor must be designed in advance. On the one hand is not convenient to use, on the other hand, the definition and use of the separation of the organization and understanding the code also caused some difficulties.

First, lambda as a substitute Functor, and can not solve the immediate problem of the definition and use. With STL containers and algorithms, lambda functions in C ++ can also style to the limit. Secondly, consistent performance for C ++ and abstract considerations, introduced the concept of lambda capture, making the lifetime of an object can be bound to a lambda expression, will be able to build objects closure (closure). In addition, C ++ 14 was added to the generic lambda, lambda enhanced type derivation algorithm, based on the type of security without compromising on features, so that modular programming (Combinator-based Programming) is easier to implement.

Complicating

In the early design of C ++, concurrent not as a core language features into account. And, threading concurrency model on a variety of different platforms have different implementations, to build a unified concurrency model is also very difficult.

C ++ 11 re-designed C ++ memory model, while maintaining compatibility with the original basis of the content of added concurrency. At the same time the standard library also joined thread (), semaphores (), mutex () and atomic operations () and so on. But also encapsulates the future / promise async mode and other operations on this basis.

Metaprogramming

C ++ itself for meta-programming provides a good support. One of the main components as a template, and provides a numerical calculation of compile-time type. However, on the one hand due to the use templates to slow down compilation speed, on the other hand, when using a stencil, very difficult to debug and troubleshooting, which makes a lot of people stay away, even STL template-based components there is also a sense of fear.

C ++ 11 in the meta-programming support do strengthened. The first is the type traits introduced as a standard library, it is possible to provide a template intuitive constraints, but also to the type of C ++ as a first class values ​​(first-class value) exists; the introduction of additional value calculation constexpr simplifies compile time , with the user-defined literals (user-defined literals) and a variable parameter templates (varadic template / parameter pack) and other features to C ++ to more easily define internal DSL.

Bright Future

As a classic programming language, C ++ are still constantly updated with. Upcoming C ++ 17, and is preparing for these important features:

Module TS: modular proposal for alternative language inherited from C header files to simplify C ++ compiler model and module dependencies,

Concepts TS: to enhance the type of constraint and type inference, while simplifying the usage of templates,

Reflection TS: support static compilation of reflections, simplify and enhance the type traits, provide a richer meta-programming features.

Conclusion

You can see the C ++ development has been walking in the forefront of the times online. On the one hand, an increase of more suitable for the development of components and systems, on the other hand, by extending the abstract language features to simplify complexity. As a newborn characteristics and historical responsibility of both programming language, enough to foresee the breadth of its application; similarly, more system-level open source projects like Mesos, also choose C ++ as the main programming language. There is sufficient reason to believe that, C ++ is being reborn.
     
         
         
         
  More:      
 
- RedHat Linux 5.5 installation process SVN Service Notes (Server)
- How to customize your Linux desktop: Gnome 3 (Linux)
- Use calcurse schedule appointments and to-do in the Linux terminal (Linux)
- Why you can have JavaScript string method (Programming)
- How Linux system password security guarantee (Linux)
- Ubuntu 14.04.02 LTS startup items erroneous writing / dev / sda1 (win 7 loader) Repair (Linux)
- Batch kill processes using awk command (Linux)
- Ubuntu users to install Xtreme Download Manager (Linux)
- Java Annotation Comments (Programming)
- Oracle Database import and export combat (Database)
- General Linux interface server parameter tuning (Server)
- Monitoring Linux System 7 command-line tool (Linux)
- Linux regex sed detailing (Linux)
- MySQL Data Types (Database)
- Physical structure and process disk IO (Linux)
- Shell scripts to copy all directories under the current directory of a certain type of file to the same directory (Linux)
- Easily create RPM packages using the FPM (Linux)
- To install the Git and Github under Ubuntu (Linux)
- Visual Studio Code experience (Linux)
- Shell Scripting Interview Questions (Programming)
     
           
     
  CopyRight 2002-2022 newfreesoft.com, All Rights Reserved.