• Company
    • Profile
    • Products & services
    • Innovations
    • Our values
    • History
    • Corporate Governance
      • Overview

        Our Corporate Governance Report contains the information required by the Directive on Information Relating to Corporate Governance issued by the SIX Swiss Exchange.

      • Board of Directors

        Find out more about the Board of Directors of the Schindler Group.

      • Board Committees

        The Board of Directors delegates certain duties to committees formed from its own members. It has appointed four standing committees.

      • Group Executive Committee

        Meet the Members of Group Executive Committee of the Schindler Group.

      • Organizational regulations

        The Organizational Regulations of the Schindler Group are based on articles 716, 716a and 716b of the Swiss Code of Obligations and the Articles of Association of Schindler Holding Ltd.

      • Articles of Association

        Read the current binding German version of the Articles of Association of Schindler Holding Ltd., as well as the English translation.

    • Suppliers
      • Overview

        Our Strategic Sourcing Organization works closely with our regional sourcing organizations to deliver competitive, innovative, and sustainable supply solutions for Schindler globally.

      • Global organization

        Our global purchasing organization is managed by a network of category and country teams, who work closely together to achieve maximum results.

      • Spend categories

        The Category structure defines the global material and service categories supplying the Schindler Group and drives the management of the spend and the supply base.

  • Responsibility
    • Overview
    • Our Sustainability Roadmap
    • Environment
      • Climate

        We are continually searching for innovative ways to reduce the carbon intensity of our vehicle fleet. And, by increasing the use of remote monitoring and adaptive servicing of our products, we are further reducing the need to travel.

      • Environmental management at our sites

        We are continuously looking for ways to do more to tackle climate change through minimizing our environmental impact at our sites.

    • People
      • Inclusion & Diversity

        Our global presence gives us access to the full spectrum of human diversity – reinforcing our ability to adapt and innovate.

      • Safety

        Every day, we move more than 1.5 billion passengers, who rely on our products to get around – that means the safety and reliability of our products are critical.

      • Communities

        We make a positive contribution to communities through our targeted Responsibility initiatives.

    • Value chain
      • Product sustainability

        Quality and innovation guide our investments to improve the environmental performance of our products.

      • Pioneer smart urban mobility

        We pioneer smart mobility with our ideas & solutions, keeping an ever-growing urban world easily accessible and making each trip safe, efficient, and swift.

      • Supply Chain engagement

        We are committed to increase sustainability and environmental awareness in our supply chain while maintaining high standards of safety & quality.

    • Ethics and compliance
      • Overview

        All Schindler employees commit themselves to observe the highest ethical standards of professional and personal conduct in their interactions with …

      • Educate

        In the Educate stage of the Compliance Program activities & processes are implemented which are designed to avoid compliance violations before they occur.

      • Examine

        In the Examine stage of the Compliance Program processes to detect hints of possible violations ("Red Flags") are implemented.

      • Enforce

        In the Enforce stage of the Compliance Program suspicions of violations are investigated, corrective actions taken and the responsible employees sanctioned.

    • Policies and reports
  • Investors
    • Overview
    • Share information
      • Overview

        Schindler registered shares & participation certificates are traded on the Swiss stock exchange since November 1, 1971.

      • Share price charts

        Data is delayed by at least 15 minutes. All quotes are in local exchange time.

      • Share capital structure

        Learn more about our capital structure and shareholders

      • Dividends

        Schindler's dividend policy is earnings-related and provides for a payout ratio of 35% to 65% of net profit attributable to shareholders of Schindler Holding Ltd.

      • Coverage and consensus

        Schindler is covered by various analysts. Their views, forecasts, and expectations may not necessarily reflect those of the company.

    • Results
      • Overview

        Schindler reports on its financial performance on a quarterly basis.

      • Archive

        Schindler reports on its financial performance on a quarterly basis. The documents in the reporting archive are available online only. For an overview click the corresponding year.

      • Non-GAAP measures

        We include certain non-GAAP measures in our Group Review comprise, which are not accounting measures as defined by IFRS.

    • Financial calendar
    • Events
    • General meetings
    • Investor Relations Contact
  • Careers
    • Overview
    • Who we are
      • People

        Learn about the people, traditions, and values that motivate us to tackle the urban mobility challenges of the 21st century.

      • Inclusion & Diversity

        By building inclusive and diverse teams, we are laying the foundation for creativity, innovation, and effective decision-making.

      • Society

        Help us transform the world. We’re looking for driven professionals ready to solve society’s most pressing urban mobility challenges.

      • Our values

        Our values are the foundation of everything we do and allow us to remain a leading global player in the elevator and escalator industry.

      • Facts & figures

        Discover the facts behind what makes Schindler a great company to work for.

    • Why Schindler
      • Compensation & benefits

        Discover more about Schindler employee compensation packages and benefits – competitive salaries are just the start!

      • Work-life balance

        Finding the right balance between work and life can be tough. We make it easier through flexible modern policies designed to meet diverse needs.

      • Training

        The key to maintaining Schindler’s proud legacy is by making sure that all our people – at every level – remain trained and ready.

      • International careers

        International assignments are a key part of how we develop our people. Grow your career internationally with Schindler.

      • Career development program

        Discover how we take our most talented young professionals on an international and multidisciplinary 6-year journey to help their careers flourish.

    • Who we look for
      • Experienced professionals

        Whether you’re a lift technician or an engineer, we need people with experience and skill. Seasoned professionals make our elevator & escalator service company great!

      • Students & graduates

        Explore the extensive possibilities for students and recent graduates at Schindler.

    • Open positions
  • Newsroom
  • Contact
Schindler worldwide

How do you program a modern elevator?

A modern elevator is a complex piece of technology. As well as a modern car, it is a distributed system comprised of multiple control units (0), some with many functionalities. 


A control unit’s software needs to perform fine-grained control of the hardware and, at the same time, express high-level application logic. In some cases, it might also need to handle connectivity, for instance to other units or external entities. 

Moreover, the overall system has strict requirements for security and safety. The designer also needs to keep hardware costs and - to some extent - power consumption under control. 

It is necessary to clarify that such a complex system cannot rely on a single framework or programming language. A modern elevator depends on a broad set of technologies. 

But is there a single programming language to go from low-level hardware control to the abstraction needed by higher-level tasks? 

A possible answer could be C++ (although some might argue that newer languages like Rust can achieve the same, while others will point to plain C as a better alternative, adding that you don’t need a "large and complicated language" (1) like C++).  

Let's explore three features that make C++, in particular modern C++, suitable for developing the software of a modern elevator. 

You do not pay for what you do not use 

With the increasing complexity of the application logic, hardware capabilities for elevator control units are improving too. Anyway, we are still talking of a constrained system that needs to manage resources carefully. 

C++ provides abstraction and high-level functionalities without imposing extra costs when those features are not needed. 

This principle is referred to as "zero-overhead abstraction" or, in layman's terms, "what you don't use, you don't pay for" (1). 

C++ maps its basic types directly to hardware memory entities (1). It does not have a big runtime such as a VM as in Java or Python, and it doesn’t have a garbage collector either.  

Its generic containers are lightweight, too, thanks to the usage of templates in the standard library.  

For example, a C++ std::array does not introduce overhead compared to a C-style array but provides many benefits: it prevents automatic decay into a pointer, maintains the array size, provides bounds checking, and allows the use of C++ container operations (3).  

This example leads to the second part of the zero-overhead abstraction principle, which goes further with "what you do use, you couldn't hand code any better" (1). 

In the std::array case, it simply means that if, for example, you want to use a basic integer array, there is no lower-level implementation of the array that could achieve better performances or memory usage. 

Let's consider the std::count_if function (2). When calling it with non-const data, its assembly output is equivalent to the output of a C function manually written to handle a specific low-level data type. Moreover, when called with const data, it lets the compiler optimize, evaluating everything at compile time. 

Choosing -Os as optimization level, the following code 

or even better

gets compiled to

directly copying to r0 the number of occurrences of the number 8 in the data array. 

Check it out yourself on Compiler Explorer: https://godbolt.org/z/o1nnPhEPY ! 

Clear interfaces: type safety and resource safety

The codebase of a modern elevator is huge, with many people involved in its development: defining clear software interfaces is crucial. 

One requirement for a language to define clear interfaces is to be type-safe and with a rich type system. 

Though C++ is not a strongly typed language, complete type safety is a guiding ideal for the language (4). Direct mapping to the hardware of basic types and compatibility with C make complete type safety something the language can only approximate. 

Here’s what Bjarne Stroustrup (creator of C++) has to say on the topic: 

Over the years, the set of language features, standard-library components, and techniques supporting that ideal has grown. Outside of low-level sections of code (hopefully isolated by type-safe interfaces), code that interfaces to code obeying different language conventions (e.g., an operation system call interface), and the implementations of fundamental abstractions (e.g., string and vector), there is now little need for type-unsafe code. (5) 

While custom solutions could be adopted to achieve strong typing for high-level interfaces, easy-to-use libraries such as NamedType (6) (7) can help with this task. 

Along with type safety, resource safety is critical for obtaining clear software interfaces. 

How has the resource returned by that function been allocated? Is it necessary to free it after use? 

Modern C++ supports the developer with smart pointers representing shared and exclusive ownership for dynamically allocated resources. 

Furthermore, it makes it easier to avoid leaks thanks to RAII (Resource Acquisition Is Initialization) technique. 

Just like type safety, even resource safety lives under the constraints of: 
no restriction of the application domain compared to C and previous versions of C++; compatibility with former versions of C++. 

These constraints make perfect resource safety an ideal to approximate. 

To conclude, it is also worth mentioning that Bjarne Stroustrup and Herb Sutter maintain a set of guidelines for modern C++ to "emphasize static type safety and resource safety" (8). 

Reliability and maturity 

While compatibility with previous versions of C++ is undoubtedly a constraint, this at the same time highlights how long-term stability lies at the core of the language’s proposition. (4). 

Its standardization by the International Organization for Standardization (ISO) (9) helps to support this claim. Why is long-term stability important for elevators? 

Elevators usually stay in operation for decades. Updating their software using new language features without being forced to rewrite the whole codebase is a must. 

Long-term stability, though, is not stopping C++ from evolving. We saw higher up  how modern C++ introduced new features to better approximate its ideals of type and resource safety, for example. Even as a 40-year-old programming language, C++ does not look outdated at all: generic programming, lambda functions, type deduction, and concepts - these are just some of the features that have been improved or have become available over the past ten years. 

A general-purpose language must evolve to keep a broad user base. And choosing a language with a broad user base is extremely important for a company producing elevators to hire a high number of competent engineers to work on its complex systems. 

Is C++ the only and perfect choice? 

In this article, we reviewed three reasons to choose modern C++ over other programming languages for the software of a modern elevator. Of course, many more could be listed. And, as for all technologies and tools, C++ as a programming language also has cons. For example, C++ is not an easy language to master, and its compilation process is not the fastest. 

Moreover, software developed in C++ is still not 100% adherent to modern best practices in terms of memory management leading to use-after-free, double-free, and similar memory issues. 

C++ does not claim to be the perfect language (11). But it is a practical language (10) whose tradeoffs must be understood before applying it in a specific business context (12). 


Resources

0 - Hello Software World, Schindler Group article

5 - The C++ Programming Language, 4th Edition, p. 14