1. Home
    1. Dashboard
    2. Search
  2. Forum
    1. Unresolved Threads
    2. Members
      1. Recent Activities
      2. Users Online
      3. Team Members
      4. Search Members
      5. Trophys
  3. Articles
  4. Blog
  5. Videos
  6. Jobs
  7. Shop
    1. Orders
  • Login or register
  • Search
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Blog Articles
  • Products
  • More Options
  1. Robotforum - Support and discussion community for industrial robots and cobots
  2. Forum
  3. General Category - Robot Forum
  4. General Discussion of Industrial Robots Only
Your browser does not support videos RoboDK Software for simulation and programming
Visit our Mainsponsor
IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Sponsored Ads

Are higher-level proprietary programming languages bad for developing programming skills?

  • IsaacMaw1
  • May 11, 2024 at 5:31 PM
  • Thread is Unresolved
  • IsaacMaw1
    Posts
    3
    • May 11, 2024 at 5:31 PM
    • #1

    Hello,

    I am a freelance journalist working on an article for engineering.com. I am investigating whether robot programmers today think that proprietary programming languages put forth by OEMs are becoming more user friendly, and as a result robot programming requires less knowledge of programming fundamentals. For example, when I learned how to program KUKA robots in 2017, the language was very similar to Java. So, in addition to learning to program that KUKA robot, I was also learning some transferable skills in my career. However, if the programming for my robot is a super polished user interface and I never see the code, I don't really learn any programming skills.


    Do you agree or disagree? I would really like to hear the thoughts this community has.

  • Fubini May 11, 2024 at 5:44 PM

    Approved the thread.
  • Online
    SkyeFire
    Reactions Received
    1,042
    Trophies
    12
    Posts
    9,388
    • May 12, 2024 at 2:04 AM
    • #2

    I wouldn't say KRL is like Java -- it's far more like 1980s PASCAL, if anything.

    The whole robot-programming space is a strange place ATM. Most robot languages (Fanuc KAREL/TP, ABB RAPID, KUKA KRL, Kawasaki AS, etc) predate modern "IT"-domain languages. And haven't evolved as fast, b/c the use cases and requirements are so different.

    Robot programming, as compared to "computer" programming, is so dominated by the motion/path planning that other features like string handling, array manipulation, object-oriented programming, and so on gets low priority (or has), often not getting much past "minimum viable feature" status. Or becomes a paid option, like basic Trig functions on Fanuc. This has helped prevent any consolidation in robot languages across brands, or the creation of a 3rd-party common language/transpiler, because how each brand handles motion is unique and proprietary. The safety-critical nature of robot systems contributes to this.

    Instead, robots have (so far) followed a path similar to CNC machines -- proprietary (more or less) language on the machine, with 3rd-party software using brand-specific postprocessors to convert from the 3rd-party "common" language into something executable by the robot. But this often leaves some degree of optimization to the programmer to perform on the post-processor output (or a programmer who knows how to get exactly what they want from the post-processor).

    There have been some recent moves, like the "timeline programming" interface on Fanuc CRXs, which tries to give a drag&drop Blockly-like programming experience. But even here (so far), this is just a translation layer atop the existing language, and the "Blockly experience" gives up utility to achieve ease of use. Which leaves most experienced programmers feeling handcuffed, and switching back to the "classic" mode.

    KUKA was doing some interesting things with the Sunrise OS a few years ago, where the controller was just a "normal" computer running "normal" Java, with the robot "abstracted" away to being essentially a Java library. This... ended up being quite a bit more complex than anyone anticipated, but it sounds like it's going to be available as an option on the KRC 6(?) going forward. I'll be interested to see what that looks like. The big advantage there was that non-robot-specific operations like string handling, TCP/IP ports, matrix algebra, etc, could be handled using "normal" Java and libraries, reducing the KUKA-specific programing know-how required to motion and I/O control. This goes hand-in-hand with the controller hardware becoming more and more commodity-PC (albeit with industrial-grade components and realtime OS cores) and the virtualization of items that used to be brand-specific, function-specific (and very $$$) hardware.

    Fanuc is advertising the ability to run some manner of Python on their upcoming R-50(?) controllers, but no word yet on what that will look like or how it will interact with the existing control software elements. I imagine they have an interest in leveraging open-source tools while retiring the tech debt of maintaining their own language suit. Similarly, AIUI KUKA has to pay Siemens a license fee for every KRC sold with KSS/KRL (dating back to the original KSS/KRL in the 1980s), so a situation where their controller runs Java (maintained by 3rd parties with lots of testing) and only have to maintain their in-house elements that are directly tied to robot motion

  • IsaacMaw1
    Posts
    3
    • May 16, 2024 at 8:39 AM
    • #3

    Thanks Skyefire, this is very interesting. I don't recall if we covered Sunrise OS in my KUKA programming course, or if I was so limited in my programming skills that they could have put anything in front of me and I would have thought it looked like Java, haha.

    It makes sense that robot programming is different to computer programming due to the motions. I think Unimate was lead-to-teach, for example.

    In general, how transferable do you think robot programming experience is between brands? I assume that things like planning a process, identifying bottlenecks, understanding safety, maintenance and troubleshooting are more valuable, and the new language is somewhat trivial. Do you agree?

  • Online
    SkyeFire
    Reactions Received
    1,042
    Trophies
    12
    Posts
    9,388
    • May 16, 2024 at 2:37 PM
    • #4
    Quote from IsaacMaw1

    In general, how transferable do you think robot programming experience is between brands? I assume that things like planning a process, identifying bottlenecks, understanding safety, maintenance and troubleshooting are more valuable, and the new language is somewhat trivial. Do you agree?

    Mostly, yes. Knowing the language is important to be able to execute the process you've planned, especially when you're pushing the margins. For example, handling precisely timed on-the-fly output signals is possible in most brands, but the techniques and syntax are very different. And knowing the fine details of how those commands work on Robot X is really important when you're struggling to squeeze out the last few 0.1sec from your cycle time.
    Also, each brand's language has its own features (or lack thereof) that can become critical, especially if you assume that Standard Feature A exists on every robot, then discover the hard way that Robot X doesn't support it (I'm looking at you, Fanuc, and your (lack of) Trig functions!)

    OTOH, while it's not a matter of "if you've programmed one brand, you've programmed them all", the bulk of the most critical skills do carry over, as you said above. Generally, I would say that if you're pretty good with one robot brand, you can climb the learning curve for another pretty quickly, as long as you have access to good manuals and tech support. In this case, it helps to be an integrator who bounces between brands regularly (ask me how I know this :icon_rolleyes:), because "agility" itself turns out to be a separate skill of its own that needs exercising. I've known far too many programmers who were absolute wizards in one brand, or one specific application, who were completely lost the moment an OOC problem hit them.

  • Woebot
    Reactions Received
    5
    Trophies
    3
    Posts
    24
    • May 20, 2024 at 2:28 AM
    • #5

    Hello,

    Just to share my experience with programming languages and robots: When I started working with robots six years ago, I had no programming experience at all. I was a mechanical technician at a machinery maker and system integrator. I learned the basics on a Yaskawa robot, then a Fanuc. I could tell my programming conceptual ideas and signal/IO concepts were lacking, so I started to learn C++, Python, and Arduino for fun in my spare time.

    The robot programs I write at work benefit from the larger concepts and basic programming fundamentals I have picked up using those more standard programming languages, even if the usual robot languages I use (Yaskawa INFORM, MelfaBasic, Yamaha Robot Programming Language, Fanuc) have a different or more rigid structure. Like others have mentioned, moving to the newer Fanuc drag-and-drop blocky style programming wasn't for me. When I am faced with a touchscreen-type pendant, I usually try to get the older overlay on it so I can use the commands the way I am used to.

    Please post a link to the article when you are finished

    Edited 2 times, last by Woebot (May 20, 2024 at 3:43 AM).

  • Online
    panic mode
    Reactions Received
    1,267
    Trophies
    11
    Posts
    13,037
    • May 20, 2024 at 9:37 PM
    • #6

    the basics of all programming languages are the same. that includes concepts of memory, logic operations, loops, passing parameters etc. this is why such topics are covered in any introductory programming course. how far you go from here is up to you. when it comes to transferring knowledge from one language to another, it is the basics that transfer well. the higher you go the less transferability exists. an example of this is code dealing with hardware layer, proprietary features, abstraction layers etc.

    for example any language will support branching and loops but not every language will support objects (this is something found in higher level languages) or direct hardware access such as DMA, IRQ, port access etc. (something normally found in low level languages).

    also most languages are created to be application specific, not general purpose. ladder logic, function block diagrams, sequential logic etc are meant for controls. even though they look completely different, underlying basics are still there is you know how to look.

    no language is bad but people can use any language badly. for example not understanding underlying principles and architecture can and generally does have severe impact on results. performance is one of obvious measures used to compare results.

    many years ago we were given task to write program that writes text file on a floppy disc and content of the file should be 100 lines of text containing numbers 1-100. this could be done differently. the naïve approach worked too but it was incredibly slow. see in those days, operating system did not have the smarts of modern OS, there was no cashing of writes. so to make this faster, smart programmers would create image of what is to be written in memory then write the entire thing once.

    so trying same exercise on modern computer would produce different results because OS is helping along and programmer would likely not even learn the difference until trying to do the same on a different platform. and then frustration would kick in "but i did this before and was fine".

    the point is that learning outcome can have vary greatly based on course and instructor. self learning is one option but this has obvious disadvantage that without guidance, it is much slower and you get to pick what you like instead of what is important or good to know.

    here is a great example of optimization

    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • Lemster68
    Reactions Received
    295
    Trophies
    9
    Posts
    2,458
    Blog Articles
    7
    • May 21, 2024 at 8:36 PM
    • #7
    Quote from panic mode

    no language is bad but people can use any language badly.

    I had been meaning to give my input on your question, and I will start with this quote from Panic mode. I absolutely agree.

    Many years ago I was going to try learning C/C++ on my Commodore Amiga 500. I had a book, and a compiler that kind of worked like the book said it would. That didn't work out so great

    Fast forward a decade, decade and a half, to where I began learning the Rapid language of ABB robots. I was fortunate enough to be able to write some of the programs we used, instead of being just a teach monkey. I was also fortunate enough to have a mentor or two early on. I also studied the variety of programs from one company to the next as I went from job site to job site. I saw some clever programming, which I usually copied and used, and I saw some not so clever programming.

    I have seen programmers write out the entire expression for calculating the distance between two points-I give them an A for their math skills but a C for ABB programming. Just use the built-in function. I have seen other programmers, not dumb guys, that break down a pos or pose into the atomic level when all they had to do was stop at the pos level and evaluate it as it is.

    Rapid is a great language, in my opinion. If one has the knowledge and imagination, one could write a program to do income tax returns.

    Other ways of programming, like TP programming of Fanuc and Yaskawa/Motoman are dumbed down versions, IMO. They are often referred to as being "user friendly". OK, if the user is not quite the sophisticated type. Many times these user friendly TP programs become spaghetti code, with jumps and labels everywhere. That can be quite difficult at times to follow. Don't get me wrong or on a high horse about Rapid, I have seen such programming in Rapid, too.

    Now back to your original question, I have to ask clarification on this part:

    Quote from IsaacMaw1

    However, if the programming for my robot is a super polished user interface and I never see the code, I don't really learn any programming skills.

    Which do you think is the higher level proprietary one? The super polished drag and drop type interface? Or languages Like Karel and Rapid?

    The drag and drop is most likely higher level, but at the user interface level it is dumbed down and certainly doesn't provide much valuable skills for real programming.

    I never really programmed Karel but I have seen some code and followed along. That and Rapid are really old school, but still evolving some.

    In the end, I think that there are far less of us that actually care enough to excel in programming, seeking out knowledge, studying code, following along in order to better ourselves. Let the teach monkeys and drag and droppers do their thing, and we can do ours.

    Some people are satisfied knowing just enough to get by while others are maybe never satisfied; always seeking better, more efficient, smarter ways to do new things, or even old ones.

  • IsaacMaw1
    Posts
    3
    • May 24, 2024 at 2:46 PM
    • #8

    Thanks everyone for your thoughtful responses. It's great to hear from people actually working in the industry, as a journalist I speak a lot with sales engineers for the big vendors/OEMs, and they don't have the same insight....

    Quote from Lemster68

    Which do you think is the higher level proprietary one? The super polished drag and drop type interface? Or languages Like Karel and Rapid?

    To clarify, I meant "higher level" in the sense of "further removed from binary". For example a language like Python is abstracted from machine code to provide features and be easier for people to read/write, while Assembly for example allows for operations that are "closer" to the actual hardware instructions.

    Skyefire pointed out above that robot languages have evolved separately from computer software languages, so I don't know if this is the correct usage. But in short I would think that the more "user friendly" an interface is, the more translation the computer/PLC is doing to get it down to the binary instructions that the controller actually follows.

  • Online
    SkyeFire
    Reactions Received
    1,042
    Trophies
    12
    Posts
    9,388
    • May 24, 2024 at 5:35 PM
    • #9
    Quote from IsaacMaw1

    But in short I would think that the more "user friendly" an interface is, the more translation the computer/PLC is doing to get it down to the binary instructions that the controller actually follows.

    At the end of the day, it's all layers of abstraction. And you're correct, the more abstraction, the less fine the level of available control. That's why people writing Python code still dip down into C when they need extremely fast or precisely-timed code (and Python itself is, at the end of the day, an abstraction layer on top of a huge library of C). And there's still the absolute madlads who write assembler on the regular.

    The definition of "high-level" language is... slippery. And it's a continuum, not a discrete definition. Most computer programmers these days would look at most current robot languages and sneer at them for being so primitive ("No OOP? No CD/CI? The '80s called, they want their languages back!"). But compared to what we started with on robots in the 1960s, it's downright next-century.

Advertising from our partners

IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Advertise in Robotics
Advertise in Robotics

Job Postings

  • Anyware Robotics is hiring!

    yzhou377 February 23, 2025 at 4:54 AM
  • How to see your Job Posting (search or recruit) here in Robot-Forum.com

    Werner Hampel November 18, 2021 at 3:44 PM
Your browser does not support videos RoboDK Software for simulation and programming

Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Thread Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Tags

  • Programming
  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™
As a registered Member:
* You will see no Google advertising
* You can translate posts into your local language
* You can ask questions or help the community with your knowledge
* You can thank the authors for their help
* You can receive notifications of replies or new topics on request
* We do not sell your data - we promise

JOIN OUR GREAT ROBOTICS COMMUNITY.
Don’t have an account yet? Register yourself now and be a part of our community!
Register Yourself Lost Password
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on Google Play
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on the App Store
Download