Tag: Object Oriented Programming

On Target Tangents

Time Tangents

Our world is full of distractions and we often find ourselves on a path that seems so distant from our original plan. We wonder where the time went and ask ourselves …

“How Did We Get There From Here?”

Are tangents disruptive impulses that take our eyes off of the goal, causing us to lose focus, and drain away our valuable time? Or, do we embrace them as an extension of “how we think” and seize the opportunity to expand the scope of our original thought processes.  Our desire to learn fuels our passion to …

Explore New Options

Some time ago we expressed our interest in learning the C++ programming language.  C++ is an amazing language and we have gained a real appreciation for object oriented programming.  While learning C++, we discovered that another very powerful language, Python, was written in C++.

Naturally, we decided to check out Python to see the power of C++ in action.  To our surprise, we learned that Python is readily available at no charge from https://python.org, is very powerful, and is an extremely versatile Object Oriented Programming language.  Python is also relatively easy to learn and is now our language of choice for rapid prototyping and development of complex solutions.

Today we discovered yet another language:  “Go”.  Coincidentally, we stumbled upon a post at TechCrunch.com titled, “Google’s Go:  A New Programming Language That’s Python Meets C++”.  We downloaded “Go” from GoLang.org to explore what this language brings to the table.

We’re committed to continue learning C++, however, we would be remiss if we decided to simply stick to the straight and narrow path of one language alone.  Where speed of execution is a factor, C++ prevails.  Where speed of execution, small size, and a “close to the metal” solution is required, Assembler takes precedent. However, where speed is less of a concern, a solution in Python is heavily favoured.  As we’ve stated many times before:

“There’s always a better way and more than one solution.” ~ Redge

When Opportunity Knocks … Answer

It would be easy to ignore the distractions that seem to stall our progress and keep us from reaching our destination, however, sometimes the journey is best enjoyed when we stop and take in the sights along the way.  In this case, the ride has been an eye opening experience.

Although we started our learning process with Python 2.7.6, we’re currently using Python 3.4.1.  Python is available and runs across the three platforms that concern us most:  Windows, OSX, and LINUX.  Soon after, we also downloaded Anaconda Python from Continuum Analytics.  The reasons for downloading Anaconda Python will become clear once you’ve had a chance to delve into the world of Python and all it has to offer.

Though we may have strayed from our C++ learning process for a short while, the Python experience has been and continues to be a tremendous journey.  Python has presented a realm of significant possibilities in Object Oriented Programming that would otherwise have remained a mystery.

Learning Python

A simple Google search for “Python Programming” will yield a host of web sites that offer tutorials, books, and so much more.  We started with a few simple books and added a few more that we purchased from our local book store to gain a sense of what Python had to offer:

The number of books available on the store shelves pales in comparison to the offerings available on Amazon.  We have since purchased a number of e-books that are easily and readily accessible using Kindle across multiple devices including my iPad and Surface Pro.  If you haven’t had a chance to work with Kindle, we highly recommend it.  It is an excellent app that makes reading e-books a breeze.

Unlocking Potential

Certainly this recent tangent has opened more doors than we could ever have imagined and we’re grateful for the experience.  While this may seem to have little to do with Lean or OEE, we would suggest otherwise.  Each program or script is comprised of multiple processes or series of processes and the environments in which they run are as diverse as the machines we find in manufacturing operations.  From our perspective, programming serves as an excellent surrogate to demonstrate lean practices and the effectiveness of our operations.

Just when you think you have all the answers, consider that one of them may hold more questions than you ever imagined.

Your feedback matters

If you have any comments, questions, or topics you would like us to address, please feel free to leave your comment in the space below or email us at feedback@leanexecution.ca or feedback@versalytics.com.  We look forward to hearing from you and thank you for visiting.

Until Next Time – STAY lean

[twitter-follow screen_name=’Versalytics’ show_count=’yes’]

Versalytics Associates

Back to Class with C++

What does C++ have to do with lean?

The language itself may not do much for lean as we know it, however, learning a new language affords us the opportunity to become students once again.

When we share and teach lean principles, it’s easy to forget what it’s like to be on the receiving end of all that information.  In other words, we often lose sight of what it means to be the student.

  • We ask questions:  Who, what, where, when, why, and how?
  • We overcome resistance to change when we recognize and value our vested interests in the current state.
  • We have a threshold for learning – small units at a time improve absorption and keeps us from getting overwhelmed.
  • We imprint – we learn by doing to improve retention and enhance our learning experience.
  • We understand and work on the premise that there’s always a better way and there’s more than one solution.
  • We celebrate our successes.

Computers are a part of our everyday life both at work and at home. Learning another language provides the opportunity to create and develop software applications that enhance our experience and the experience of others in the future.

Why C++?

Computers have evolved over the years from desktops, laptops, and netbooks to tablets, mobile phones, and even watches! This rapidly changing ecosystem has enabled new technologies that require more evolved object-oriented languages like C++. A growing number of platforms and devices makes choosing a language to support them that much more difficult. Our decision to choose one language over another is dependent on the Operating System and / or hardware that will run our applications – Apple, Microsoft Windows, Unix, Linux, or Android.

There was a time when we used Basic, Fortran, Assembly (x86), and C to develop applications. As Microsoft’s Office suite became more popular, we even extended our expertise to include visual basic for applications (VBA). Assembly language is a low-level language that requires a thorough knowledge of both the hardware and the operating system for a given machine. A medium to high level language such as C/C++ allows us to concern ourselves with the functional aspects of the application rather than the details of the hardware itself.

C++ is fast, fully compiled, object-oriented, portable, and standardized (ANSI and ISO). Standardization assures a higher level of stability and support for a minimum set of language features across multiple platforms. While other object-oriented programming languages exist, like Java and C#, we selected C++ for now. Texts for Java and C# are also part of our language library for consideration on future projects.

Getting Started with C++

The first book you read on a given language will become the lens through which all others are viewed.  In other words, your first book will establish or heavily influence your baseline thinking going forward.

Before selecting any book on programming, read the inside and outside covers as well as the introduction to determine if the book meets with your level of experience and requirements. You should also note that authors typically choose a development system that forms the basis for the lessons that follow.

Though a standard exists for the C++ language, use of the Integrated Development Environment (IDE) and compiler options depends on the product you choose.

The books:

Each book discusses the resources, including software, required to successfully set up C++ and the applicable Integrated Development Environment on your computer. Using a well designed Integrated Development Environment (IDE) simplifies the process of programming, compiling, and linking your programs.

We successfully installed CodeBlocks with the MinGW compiler as well as Microsoft’s Visual C++ Express. Use the internet to see what resources are available – you’ll be surprised at the amount of information that’s available and much of it is free. It’s worth your time to Google “C++” to see what’s out there.

Our Goal

Our goal is to review each book’s ability to teach us the C++ language. As we are learning the language, we cannot attest to the “correctness” or integrity of the content being taught in these books. We’ll share our experiences and thoughts as we dig deeper into the world of C++.

Your feedback matters

If you have any comments, questions, or topics you would like us to address, please feel free to leave your comment in the space below or email us at feedback@leanexecution.ca or feedback@versalytics.com.  We look forward to hearing from you and thank you for visiting.

Until Next Time – STAY lean

[twitter-follow screen_name=’Versalytics’ show_count=’yes’]

Versalytics Analytics