SlideShare a Scribd company logo
© 2014 IBM Corporation
DAX-5162
C-ing is Believing: Being Smart about
C/C++ Development on AIX and
Linux
Kenny Smith, Strongback Consulting
About Us: Strongback Consulting
• IBM Advanced Business Partner
• Rational, WebSphere, ICS SVP certified
• Strongly focused on DevOps, Enterprise Modernization, and application infrastructure
• Key Industries Served: Finance, Insurance, Travel, Logistics, Healthcare,
Manufacturing, Government
• Rational Design Partner for HATS and other Rational enterprise modernization
technologies
Discover us at:
http://www.strongback.us
Subscribe to us at
http://blog.strongbackconsulting.com
Socialize with us on Facebook & LinkedIn
http://www.facebook.com/StrongbackConsulting
http://www.linkedin.com/company/290754
Talking Points
• Editors
• Content Assist & Templates
• Refactoring
• Static Code Analysis
• Performance Advisor
2
In the beginning….
3
Then came telnet
• Edit directly on the target computer
• English based language construction
4
Next came vi… and then vim
• Colorized parsing of code, regex search/replace
• ..but this is where most people stopped!
5
Why do I need a rich development editor?
• Productivity! [proh-duhk-tiv-i-tee]
• Its about the economics!
• The rate at which goods and services having exchange
value are brought forth or produced
– :Productivity increased dramatically last year.
• Why do you use a word processor instead of a type writer?
6
Complexities of C/C++
• C makes it easy to shoot yourself in the foot. C++ makes it
harder, but when you do, you blow away your whole leg! —
Bjarne Stroustrup
• Pointers
• Memory arithmetic
• Memory leaks (see above)
• Compiler differences – variability depending upon the processor
• Syntax – language elements not found in other languages
• Debugging
7
The Editors:
LPEX, C/C++, Remote
8
The LPEX Editor
• Can act like the standard editor of any system
• vi/emacs for *Nix systems
• ispf for mainframe
• seu for IBM I
• Change appearance to
make it look like telnet
9
The General C/C++ Editor
• Multiple ways to edit C/C++ source
• C-C++ editor - Acts more like typical Eclipse
language editors (such as Java)
• LPEX Editor – can emulate vi editor
• Use context menu, Open With to open with a
specific editor
• Remote C/C++ specifically used in AIX/Linux
projects
Icons used for C/C++
• Icons found in
• Project Explorer
• Call Hierarchy
• Type Hierarchy
• Outline View
• Make targets view
• Navigator View
Syntax Highlighting
• Comments
• Strings
• Reserved words
• values, variables
12
Current cursor
row has blue
background
Method indicators
• Margin is highlighted in blue indicating the beginning and ending
of the current method
13
method
indicator
Cursor
position
Code Folding
• Comments, methods & classes can be collapsed or folded for
ease of reading
• Click on the + to expand
• Click on the – to collapse
14
Indicates additional
code inside the
collapsed area
Hover
• Place your cursor over a variable or method
• Displays a window showing the declaration
15
Hover mouse over
the convert method
Window pops up in
the editor showing
the declaration.
Errors / Warnings
• Margin area indicators to
show errors or warnings
• Hover the cursor over to
show more information
• Warnings also underlined
in yellow squiggles
16
Column
location
of error
Hover over marker
Mark occurrences
• Put cursor on a variable
name
• Additional occurrences
marked with a gray
background
• Toggle on/off with the
task bar icon
17
Show whitespace characters
• Use menu bar to show grey symbols representing whitespace
characters
• Space, tab, carriage return, new line, etc.
18
Code formatting
• Shift left / right
• Correct Indentation
• Format
• auto formats the entire source
• properly indents throughout
19
Format Source (CNTL+SHIFT+F)
Before After
20
Commenting code
• Highlight multiple rows
• Click CTRL+ / to comment
• Click CTRL + / to uncomment
• For /* style block commenting, use
CTRL+SHIFT+/
21
Open Declaration
• From context menu, or F3: opens declared method
location
• If in another file (or header), the file must be on the
search path
• Also depends on the type of project you are using
– MVS Subproject, z/Unix Subproject, C/C++ project, zFolder, etc.
22
Quick Outline
• Right Click → Quick Outline
• Shows a searchable outline of the
source member
• Type in the text field to search
methods and types
23
Enter search
text here
Filtered
Results
Call Hierarchy
• Right Click → Open Call Hierarchy
• shows the loaded callers and callees for a selected C/C++
function
24
Toggle
between caller
and callee
Hide contants,
enums, and
variables
Show history of
call hierarchy
Find Dialog
• CTRL + F to bring
up dialog
• Can search case
sensitive, forward,
backward, on all
code, or just that
selected.
• Regular expressions
• Content assist
available to
help build a
search query
25
Customizing the Editor
26
CNTL+SHIFT+L
• Shows ALL keyboard shortcuts available
• one keyboard shortcut to rule them all
27
Content Assist &
Templates
28
Content Assist
29
• Allows you to provide context
sensitive content completion
upon user request
• CTRL+Space again to cycle
through parser or template
proposals
• Clicking or pressing Enter on
a selected line in the list
inserts the selection into the
editor.
Configure the behavior of the content assist in the C/C++ → Editor → Code Assist preference page.
Content Assist Sources
• In the C/C++ editor press Ctrl + Space on code to complete. This
opens a list of available code completions.
• Use the mouse or the keyboard (Up Arrow, Down Arrow, Page Up, Page
Down, Home, End, Enter) to navigate and select lines in the list.
• Existing methods, properties, fields, etc.
• Language constructs
• Code templates
30
What are Templates?
• Simply put, little pieces of code with defined placeholders
• Work slightly differently than snippets
• Place holders are called variables
• Syntax is ${variable_name}
• Eclipse based – many languages supported
• Java, ANT, COBOL, PL/I, JavaScript, HTML, XML, etc.
• Can be imported & exported
• Can vary be easy or difficult to setup
• Will save you HOURS upon HOURS of hand coding!
Creating Templates Continued
• Insert Variable – inserts a given variable
• Variable is described in the yellow box to the right of its name
Syntax Check
• Editor parsed syntax checking
33
Refactoring
34
Refactoring
35
Refactoring: make system-wide code changes without affecting the behavior of
the program.
Refactoring commands are available from the context menus of several views (e.g. Project
Explorer, Outline) and editors. Many "apparently simple" commands, such as Move and
Rename, are actually refactoring operations, since moving and renaming elements often
require changes in dependent files.
• Extract a function, constant or local variable
• Rename a method, variable or class
• Hide a method signature
Operations can be previewed for all of the changes resulting from a
refactoring action before you choose to carry them out.
Extract Constant
• Improve performance, and avoid duplicate strings
36
Renaming
• Easily rename a variable throughout your code
• More accurate than find/replace
– i.e. try to find and replace a single character variable!
37
Source Actions
38
Use the Source menu to perform many actions to modify, remove or generate code
automatically.
• Toggle a line or block as a comment; on or off.
• Format entire source files or fragments.
• Correct Indentation
• Implement getters & setters
• Sort lines
The Source menu can be accessed from many context views such as in the C/C++ editor.
Software
Analyzer
39
Static Code Analysis
• Software analyzer built into the product
• Static code analysis can find common coding errors
• Can create scan configurations and check against multiple rules
40
Software Analyzer Results
• Categorized results can be exported into XML
• could import into RTC as work items for remediation
• Severity and categories tell you which things to work on first
41
Tuning with Performance Advisor
• Collects data via tprof/procstack (AIX), or oProfile (linux)
42
Summary
• Why we have tools – PRODUCTIVITY!
• Editor improvements over vi
• Refactoring tools
• Content Assist, Templating
• Static Code Analysis
• Performance Advisor
• What we did not cover: Debugging
• This alone is worthy of this tool in your toolbox
43
References
• Performance tuning C/C++ applications with Performance
Advisor in RDAL
44
Questions?
45
Thank YouDiscover us at:
http://www.strongback.us
Socialize with us on Facebook & LinkedIn
http://www.facebook.com/StrongbackConsulting
http://www.linkedin.com/company/290754
Subscribe to us at
http://blog.strongbackconsulting.com

More Related Content

What's hot

C programming language
C programming languageC programming language
C programming language
Maha lakshmi
 
Introduction to C Programming
Introduction to C ProgrammingIntroduction to C Programming
Introduction to C Programming
MOHAMAD NOH AHMAD
 
Cpu
CpuCpu
C for Engineers
C for EngineersC for Engineers
C for Engineers
Julie Iskander
 
Csc240 -lecture_3
Csc240  -lecture_3Csc240  -lecture_3
Csc240 -lecture_3
Ainuddin Yousufzai
 
C languaGE UNIT-1
C languaGE UNIT-1C languaGE UNIT-1

What's hot (6)

C programming language
C programming languageC programming language
C programming language
 
Introduction to C Programming
Introduction to C ProgrammingIntroduction to C Programming
Introduction to C Programming
 
Cpu
CpuCpu
Cpu
 
C for Engineers
C for EngineersC for Engineers
C for Engineers
 
Csc240 -lecture_3
Csc240  -lecture_3Csc240  -lecture_3
Csc240 -lecture_3
 
C languaGE UNIT-1
C languaGE UNIT-1C languaGE UNIT-1
C languaGE UNIT-1
 

Viewers also liked

Portfolio Eric
Portfolio EricPortfolio Eric
Portfolio Eric
funtastiko
 
How Arcad Skipper pack works for the IBM i
How Arcad Skipper pack works for the IBM iHow Arcad Skipper pack works for the IBM i
How Arcad Skipper pack works for the IBM i
Strongback Consulting
 
Plurals
PluralsPlurals
Plurals
mj cobo
 
VeMMA May 2009
VeMMA  May 2009VeMMA  May 2009
VeMMA May 2009Gloria85
 
A Soldier, A Poet, A Human
A Soldier, A Poet, A HumanA Soldier, A Poet, A Human
A Soldier, A Poet, A Human
Ryan Harwood
 
Making Rational HATS a Strategic Investment
Making Rational HATS a Strategic InvestmentMaking Rational HATS a Strategic Investment
Making Rational HATS a Strategic Investment
Strongback Consulting
 
Software Archaeology and Code Refactoring with Rational Developer for System ...
Software Archaeology and Code Refactoring with Rational Developer for System ...Software Archaeology and Code Refactoring with Rational Developer for System ...
Software Archaeology and Code Refactoring with Rational Developer for System ...
Strongback Consulting
 
Tips for Developing and Testing IBM HATS Applications
Tips for Developing and Testing IBM HATS ApplicationsTips for Developing and Testing IBM HATS Applications
Tips for Developing and Testing IBM HATS Applications
Strongback Consulting
 
How to become a Rational Developer for IBM i Power User
How to become a Rational Developer for IBM i Power UserHow to become a Rational Developer for IBM i Power User
How to become a Rational Developer for IBM i Power User
Strongback Consulting
 
Patterns and Antipatterns for Adopting IBM DevOps Tools
Patterns and Antipatterns for Adopting IBM DevOps ToolsPatterns and Antipatterns for Adopting IBM DevOps Tools
Patterns and Antipatterns for Adopting IBM DevOps Tools
Strongback Consulting
 
IBM Collaborative Lifecycle Management Solution for DevOps v6
IBM Collaborative Lifecycle Management Solution for DevOps v6IBM Collaborative Lifecycle Management Solution for DevOps v6
IBM Collaborative Lifecycle Management Solution for DevOps v6
Strongback Consulting
 
Louisiana Technology Council Summer 2010
Louisiana Technology Council Summer 2010Louisiana Technology Council Summer 2010
Louisiana Technology Council Summer 2010
JaclynSBR
 
Feminism Philosophy
Feminism   PhilosophyFeminism   Philosophy
Feminism Philosophy
carebear228
 
12 Reasons Culture Eats Strategy for Lunch
12 Reasons Culture Eats Strategy for Lunch12 Reasons Culture Eats Strategy for Lunch
12 Reasons Culture Eats Strategy for Lunch
Joe Tye
 

Viewers also liked (14)

Portfolio Eric
Portfolio EricPortfolio Eric
Portfolio Eric
 
How Arcad Skipper pack works for the IBM i
How Arcad Skipper pack works for the IBM iHow Arcad Skipper pack works for the IBM i
How Arcad Skipper pack works for the IBM i
 
Plurals
PluralsPlurals
Plurals
 
VeMMA May 2009
VeMMA  May 2009VeMMA  May 2009
VeMMA May 2009
 
A Soldier, A Poet, A Human
A Soldier, A Poet, A HumanA Soldier, A Poet, A Human
A Soldier, A Poet, A Human
 
Making Rational HATS a Strategic Investment
Making Rational HATS a Strategic InvestmentMaking Rational HATS a Strategic Investment
Making Rational HATS a Strategic Investment
 
Software Archaeology and Code Refactoring with Rational Developer for System ...
Software Archaeology and Code Refactoring with Rational Developer for System ...Software Archaeology and Code Refactoring with Rational Developer for System ...
Software Archaeology and Code Refactoring with Rational Developer for System ...
 
Tips for Developing and Testing IBM HATS Applications
Tips for Developing and Testing IBM HATS ApplicationsTips for Developing and Testing IBM HATS Applications
Tips for Developing and Testing IBM HATS Applications
 
How to become a Rational Developer for IBM i Power User
How to become a Rational Developer for IBM i Power UserHow to become a Rational Developer for IBM i Power User
How to become a Rational Developer for IBM i Power User
 
Patterns and Antipatterns for Adopting IBM DevOps Tools
Patterns and Antipatterns for Adopting IBM DevOps ToolsPatterns and Antipatterns for Adopting IBM DevOps Tools
Patterns and Antipatterns for Adopting IBM DevOps Tools
 
IBM Collaborative Lifecycle Management Solution for DevOps v6
IBM Collaborative Lifecycle Management Solution for DevOps v6IBM Collaborative Lifecycle Management Solution for DevOps v6
IBM Collaborative Lifecycle Management Solution for DevOps v6
 
Louisiana Technology Council Summer 2010
Louisiana Technology Council Summer 2010Louisiana Technology Council Summer 2010
Louisiana Technology Council Summer 2010
 
Feminism Philosophy
Feminism   PhilosophyFeminism   Philosophy
Feminism Philosophy
 
12 Reasons Culture Eats Strategy for Lunch
12 Reasons Culture Eats Strategy for Lunch12 Reasons Culture Eats Strategy for Lunch
12 Reasons Culture Eats Strategy for Lunch
 

Similar to Being Smart about C/C++ Development on AIX and Linux

C_Programming_Notes_ICE
C_Programming_Notes_ICEC_Programming_Notes_ICE
C_Programming_Notes_ICE
Gilbert NZABONITEGEKA
 
C LANGUAGE UNIT-1 PREPARED BY M V BRAHMANANDA REDDY
C LANGUAGE UNIT-1 PREPARED BY M V BRAHMANANDA REDDYC LANGUAGE UNIT-1 PREPARED BY M V BRAHMANANDA REDDY
C LANGUAGE UNIT-1 PREPARED BY M V BRAHMANANDA REDDY
Malikireddy Bramhananda Reddy
 
C language unit-1
C language unit-1C language unit-1
INTRODUCTION TO C PROGRAMMING in basic c language
INTRODUCTION TO C PROGRAMMING in basic c languageINTRODUCTION TO C PROGRAMMING in basic c language
INTRODUCTION TO C PROGRAMMING in basic c language
GOKULKANNANMMECLECTC
 
Coding Like the Wind - Tips and Tricks for the Microsoft Visual Studio 2012 C...
Coding Like the Wind - Tips and Tricks for the Microsoft Visual Studio 2012 C...Coding Like the Wind - Tips and Tricks for the Microsoft Visual Studio 2012 C...
Coding Like the Wind - Tips and Tricks for the Microsoft Visual Studio 2012 C...
Rainer Stropek
 
Design Like a Pro: Scripting Best Practices
Design Like a Pro: Scripting Best PracticesDesign Like a Pro: Scripting Best Practices
Design Like a Pro: Scripting Best Practices
Inductive Automation
 
[artifactconf] Github for People Who Don't Code
[artifactconf] Github for People Who Don't Code[artifactconf] Github for People Who Don't Code
[artifactconf] Github for People Who Don't Code
Christopher Schmitt
 
Object Oriented Programming using C++ - Part 1
Object Oriented Programming using C++ - Part 1Object Oriented Programming using C++ - Part 1
Object Oriented Programming using C++ - Part 1
University College of Engineering Kakinada, JNTUK - Kakinada, India
 
Embedded _c_
Embedded  _c_Embedded  _c_
Embedded _c_
Moorthy Peesapati
 
Design Like a Pro: Scripting Best Practices
Design Like a Pro: Scripting Best PracticesDesign Like a Pro: Scripting Best Practices
Design Like a Pro: Scripting Best Practices
Inductive Automation
 
Introduction-to-C-Part-1.pdf
Introduction-to-C-Part-1.pdfIntroduction-to-C-Part-1.pdf
Introduction-to-C-Part-1.pdf
AnassElHousni
 
NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET
Dmytro Mindra
 
Basics of C Prog Lang.pdf
Basics of C Prog Lang.pdfBasics of C Prog Lang.pdf
Basics of C Prog Lang.pdf
KalighatOkira
 
Toward Hybrid Cloud Serverless Transparency with Lithops Framework
Toward Hybrid Cloud Serverless Transparency with Lithops FrameworkToward Hybrid Cloud Serverless Transparency with Lithops Framework
Toward Hybrid Cloud Serverless Transparency with Lithops Framework
LibbySchulze
 
C som-programmeringssprog-bt
C som-programmeringssprog-btC som-programmeringssprog-bt
C som-programmeringssprog-bt
InfinIT - Innovationsnetværket for it
 
Chap_________________1_Introduction.pptx
Chap_________________1_Introduction.pptxChap_________________1_Introduction.pptx
Chap_________________1_Introduction.pptx
Ronaldo Aditya
 
Basics of C.ppt
Basics of C.pptBasics of C.ppt
Basics of C.ppt
8759000398
 
Learning the C Language
Learning the C LanguageLearning the C Language
Learning the C Language
nTier Custom Solutions
 
c++
 c++  c++
Valuable Information on Lexical Analysis in Compiler Design
Valuable Information on Lexical Analysis in Compiler DesignValuable Information on Lexical Analysis in Compiler Design
Valuable Information on Lexical Analysis in Compiler Design
Lesa Cote
 

Similar to Being Smart about C/C++ Development on AIX and Linux (20)

C_Programming_Notes_ICE
C_Programming_Notes_ICEC_Programming_Notes_ICE
C_Programming_Notes_ICE
 
C LANGUAGE UNIT-1 PREPARED BY M V BRAHMANANDA REDDY
C LANGUAGE UNIT-1 PREPARED BY M V BRAHMANANDA REDDYC LANGUAGE UNIT-1 PREPARED BY M V BRAHMANANDA REDDY
C LANGUAGE UNIT-1 PREPARED BY M V BRAHMANANDA REDDY
 
C language unit-1
C language unit-1C language unit-1
C language unit-1
 
INTRODUCTION TO C PROGRAMMING in basic c language
INTRODUCTION TO C PROGRAMMING in basic c languageINTRODUCTION TO C PROGRAMMING in basic c language
INTRODUCTION TO C PROGRAMMING in basic c language
 
Coding Like the Wind - Tips and Tricks for the Microsoft Visual Studio 2012 C...
Coding Like the Wind - Tips and Tricks for the Microsoft Visual Studio 2012 C...Coding Like the Wind - Tips and Tricks for the Microsoft Visual Studio 2012 C...
Coding Like the Wind - Tips and Tricks for the Microsoft Visual Studio 2012 C...
 
Design Like a Pro: Scripting Best Practices
Design Like a Pro: Scripting Best PracticesDesign Like a Pro: Scripting Best Practices
Design Like a Pro: Scripting Best Practices
 
[artifactconf] Github for People Who Don't Code
[artifactconf] Github for People Who Don't Code[artifactconf] Github for People Who Don't Code
[artifactconf] Github for People Who Don't Code
 
Object Oriented Programming using C++ - Part 1
Object Oriented Programming using C++ - Part 1Object Oriented Programming using C++ - Part 1
Object Oriented Programming using C++ - Part 1
 
Embedded _c_
Embedded  _c_Embedded  _c_
Embedded _c_
 
Design Like a Pro: Scripting Best Practices
Design Like a Pro: Scripting Best PracticesDesign Like a Pro: Scripting Best Practices
Design Like a Pro: Scripting Best Practices
 
Introduction-to-C-Part-1.pdf
Introduction-to-C-Part-1.pdfIntroduction-to-C-Part-1.pdf
Introduction-to-C-Part-1.pdf
 
NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET NetWork - 15.10.2011 - Applied code generation in .NET
NetWork - 15.10.2011 - Applied code generation in .NET
 
Basics of C Prog Lang.pdf
Basics of C Prog Lang.pdfBasics of C Prog Lang.pdf
Basics of C Prog Lang.pdf
 
Toward Hybrid Cloud Serverless Transparency with Lithops Framework
Toward Hybrid Cloud Serverless Transparency with Lithops FrameworkToward Hybrid Cloud Serverless Transparency with Lithops Framework
Toward Hybrid Cloud Serverless Transparency with Lithops Framework
 
C som-programmeringssprog-bt
C som-programmeringssprog-btC som-programmeringssprog-bt
C som-programmeringssprog-bt
 
Chap_________________1_Introduction.pptx
Chap_________________1_Introduction.pptxChap_________________1_Introduction.pptx
Chap_________________1_Introduction.pptx
 
Basics of C.ppt
Basics of C.pptBasics of C.ppt
Basics of C.ppt
 
Learning the C Language
Learning the C LanguageLearning the C Language
Learning the C Language
 
c++
 c++  c++
c++
 
Valuable Information on Lexical Analysis in Compiler Design
Valuable Information on Lexical Analysis in Compiler DesignValuable Information on Lexical Analysis in Compiler Design
Valuable Information on Lexical Analysis in Compiler Design
 

More from Strongback Consulting

Software Archaeology with RDz and RAA
Software Archaeology with RDz and RAASoftware Archaeology with RDz and RAA
Software Archaeology with RDz and RAA
Strongback Consulting
 
IBM Rational HATS Overview 2013
IBM Rational HATS Overview 2013IBM Rational HATS Overview 2013
IBM Rational HATS Overview 2013
Strongback Consulting
 
Teaching old dogs new tricks with Rational Developer for System i
Teaching old dogs new tricks with Rational Developer for System iTeaching old dogs new tricks with Rational Developer for System i
Teaching old dogs new tricks with Rational Developer for System i
Strongback Consulting
 
IBM Innovate 2013: Making Rational HATS a Strategic Investment
IBM Innovate 2013: Making Rational HATS a Strategic InvestmentIBM Innovate 2013: Making Rational HATS a Strategic Investment
IBM Innovate 2013: Making Rational HATS a Strategic Investment
Strongback Consulting
 
Linux 101
Linux 101Linux 101
How a tactical HATS solution became a strategic asset - A Customer Story
How a tactical HATS solution became a strategic asset - A Customer StoryHow a tactical HATS solution became a strategic asset - A Customer Story
How a tactical HATS solution became a strategic asset - A Customer Story
Strongback Consulting
 
Rational collaborative-lifecycle-management-2012
Rational collaborative-lifecycle-management-2012Rational collaborative-lifecycle-management-2012
Rational collaborative-lifecycle-management-2012
Strongback Consulting
 
Build Smarter User Interfaces for Legacy Applications with IBM Rational Host ...
Build Smarter User Interfaces for Legacy Applications with IBM Rational Host ...Build Smarter User Interfaces for Legacy Applications with IBM Rational Host ...
Build Smarter User Interfaces for Legacy Applications with IBM Rational Host ...
Strongback Consulting
 
Collaborative Quality Management
Collaborative Quality ManagementCollaborative Quality Management
Collaborative Quality Management
Strongback Consulting
 
Rational HATS and HIS v8 Overview
Rational HATS and HIS v8 OverviewRational HATS and HIS v8 Overview
Rational HATS and HIS v8 Overview
Strongback Consulting
 
Collaborative Lifecycle Managmenent - an Introduction
Collaborative Lifecycle Managmenent - an IntroductionCollaborative Lifecycle Managmenent - an Introduction
Collaborative Lifecycle Managmenent - an Introduction
Strongback Consulting
 
IBM Innovate 2011- What every System i Developer Needs to Know
IBM Innovate 2011- What every System i Developer Needs to KnowIBM Innovate 2011- What every System i Developer Needs to Know
IBM Innovate 2011- What every System i Developer Needs to Know
Strongback Consulting
 
Rational HATS overview 7.5.1
Rational HATS overview 7.5.1Rational HATS overview 7.5.1
Rational HATS overview 7.5.1
Strongback Consulting
 
Using Dojo Javascript Framework with Rational HATS
Using Dojo Javascript Framework with Rational HATSUsing Dojo Javascript Framework with Rational HATS
Using Dojo Javascript Framework with Rational HATS
Strongback Consulting
 
What's New in Rational Software for POWER Systems
What's New in Rational Software for POWER SystemsWhat's New in Rational Software for POWER Systems
What's New in Rational Software for POWER Systems
Strongback Consulting
 
Rational Team Concertfor Power Customer Presentation02 09 10
Rational Team Concertfor Power Customer Presentation02 09 10Rational Team Concertfor Power Customer Presentation02 09 10
Rational Team Concertfor Power Customer Presentation02 09 10
Strongback Consulting
 
Rational Quality Manager
Rational Quality ManagerRational Quality Manager
Rational Quality Manager
Strongback Consulting
 
RTCi Demo Scenario
RTCi Demo ScenarioRTCi Demo Scenario
RTCi Demo Scenario
Strongback Consulting
 
Daos Technical Overview Ne Lotus
Daos Technical Overview Ne LotusDaos Technical Overview Ne Lotus
Daos Technical Overview Ne Lotus
Strongback Consulting
 
Rational HATS and CSS
Rational HATS and CSSRational HATS and CSS
Rational HATS and CSS
Strongback Consulting
 

More from Strongback Consulting (20)

Software Archaeology with RDz and RAA
Software Archaeology with RDz and RAASoftware Archaeology with RDz and RAA
Software Archaeology with RDz and RAA
 
IBM Rational HATS Overview 2013
IBM Rational HATS Overview 2013IBM Rational HATS Overview 2013
IBM Rational HATS Overview 2013
 
Teaching old dogs new tricks with Rational Developer for System i
Teaching old dogs new tricks with Rational Developer for System iTeaching old dogs new tricks with Rational Developer for System i
Teaching old dogs new tricks with Rational Developer for System i
 
IBM Innovate 2013: Making Rational HATS a Strategic Investment
IBM Innovate 2013: Making Rational HATS a Strategic InvestmentIBM Innovate 2013: Making Rational HATS a Strategic Investment
IBM Innovate 2013: Making Rational HATS a Strategic Investment
 
Linux 101
Linux 101Linux 101
Linux 101
 
How a tactical HATS solution became a strategic asset - A Customer Story
How a tactical HATS solution became a strategic asset - A Customer StoryHow a tactical HATS solution became a strategic asset - A Customer Story
How a tactical HATS solution became a strategic asset - A Customer Story
 
Rational collaborative-lifecycle-management-2012
Rational collaborative-lifecycle-management-2012Rational collaborative-lifecycle-management-2012
Rational collaborative-lifecycle-management-2012
 
Build Smarter User Interfaces for Legacy Applications with IBM Rational Host ...
Build Smarter User Interfaces for Legacy Applications with IBM Rational Host ...Build Smarter User Interfaces for Legacy Applications with IBM Rational Host ...
Build Smarter User Interfaces for Legacy Applications with IBM Rational Host ...
 
Collaborative Quality Management
Collaborative Quality ManagementCollaborative Quality Management
Collaborative Quality Management
 
Rational HATS and HIS v8 Overview
Rational HATS and HIS v8 OverviewRational HATS and HIS v8 Overview
Rational HATS and HIS v8 Overview
 
Collaborative Lifecycle Managmenent - an Introduction
Collaborative Lifecycle Managmenent - an IntroductionCollaborative Lifecycle Managmenent - an Introduction
Collaborative Lifecycle Managmenent - an Introduction
 
IBM Innovate 2011- What every System i Developer Needs to Know
IBM Innovate 2011- What every System i Developer Needs to KnowIBM Innovate 2011- What every System i Developer Needs to Know
IBM Innovate 2011- What every System i Developer Needs to Know
 
Rational HATS overview 7.5.1
Rational HATS overview 7.5.1Rational HATS overview 7.5.1
Rational HATS overview 7.5.1
 
Using Dojo Javascript Framework with Rational HATS
Using Dojo Javascript Framework with Rational HATSUsing Dojo Javascript Framework with Rational HATS
Using Dojo Javascript Framework with Rational HATS
 
What's New in Rational Software for POWER Systems
What's New in Rational Software for POWER SystemsWhat's New in Rational Software for POWER Systems
What's New in Rational Software for POWER Systems
 
Rational Team Concertfor Power Customer Presentation02 09 10
Rational Team Concertfor Power Customer Presentation02 09 10Rational Team Concertfor Power Customer Presentation02 09 10
Rational Team Concertfor Power Customer Presentation02 09 10
 
Rational Quality Manager
Rational Quality ManagerRational Quality Manager
Rational Quality Manager
 
RTCi Demo Scenario
RTCi Demo ScenarioRTCi Demo Scenario
RTCi Demo Scenario
 
Daos Technical Overview Ne Lotus
Daos Technical Overview Ne LotusDaos Technical Overview Ne Lotus
Daos Technical Overview Ne Lotus
 
Rational HATS and CSS
Rational HATS and CSSRational HATS and CSS
Rational HATS and CSS
 

Recently uploaded

Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
BibashShahi
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
Ivo Velitchkov
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
saastr
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 

Recently uploaded (20)

Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 

Being Smart about C/C++ Development on AIX and Linux

  • 1. © 2014 IBM Corporation DAX-5162 C-ing is Believing: Being Smart about C/C++ Development on AIX and Linux Kenny Smith, Strongback Consulting
  • 2. About Us: Strongback Consulting • IBM Advanced Business Partner • Rational, WebSphere, ICS SVP certified • Strongly focused on DevOps, Enterprise Modernization, and application infrastructure • Key Industries Served: Finance, Insurance, Travel, Logistics, Healthcare, Manufacturing, Government • Rational Design Partner for HATS and other Rational enterprise modernization technologies Discover us at: http://www.strongback.us Subscribe to us at http://blog.strongbackconsulting.com Socialize with us on Facebook & LinkedIn http://www.facebook.com/StrongbackConsulting http://www.linkedin.com/company/290754
  • 3. Talking Points • Editors • Content Assist & Templates • Refactoring • Static Code Analysis • Performance Advisor 2
  • 5. Then came telnet • Edit directly on the target computer • English based language construction 4
  • 6. Next came vi… and then vim • Colorized parsing of code, regex search/replace • ..but this is where most people stopped! 5
  • 7. Why do I need a rich development editor? • Productivity! [proh-duhk-tiv-i-tee] • Its about the economics! • The rate at which goods and services having exchange value are brought forth or produced – :Productivity increased dramatically last year. • Why do you use a word processor instead of a type writer? 6
  • 8. Complexities of C/C++ • C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, you blow away your whole leg! — Bjarne Stroustrup • Pointers • Memory arithmetic • Memory leaks (see above) • Compiler differences – variability depending upon the processor • Syntax – language elements not found in other languages • Debugging 7
  • 10. The LPEX Editor • Can act like the standard editor of any system • vi/emacs for *Nix systems • ispf for mainframe • seu for IBM I • Change appearance to make it look like telnet 9
  • 11. The General C/C++ Editor • Multiple ways to edit C/C++ source • C-C++ editor - Acts more like typical Eclipse language editors (such as Java) • LPEX Editor – can emulate vi editor • Use context menu, Open With to open with a specific editor • Remote C/C++ specifically used in AIX/Linux projects
  • 12. Icons used for C/C++ • Icons found in • Project Explorer • Call Hierarchy • Type Hierarchy • Outline View • Make targets view • Navigator View
  • 13. Syntax Highlighting • Comments • Strings • Reserved words • values, variables 12 Current cursor row has blue background
  • 14. Method indicators • Margin is highlighted in blue indicating the beginning and ending of the current method 13 method indicator Cursor position
  • 15. Code Folding • Comments, methods & classes can be collapsed or folded for ease of reading • Click on the + to expand • Click on the – to collapse 14 Indicates additional code inside the collapsed area
  • 16. Hover • Place your cursor over a variable or method • Displays a window showing the declaration 15 Hover mouse over the convert method Window pops up in the editor showing the declaration.
  • 17. Errors / Warnings • Margin area indicators to show errors or warnings • Hover the cursor over to show more information • Warnings also underlined in yellow squiggles 16 Column location of error Hover over marker
  • 18. Mark occurrences • Put cursor on a variable name • Additional occurrences marked with a gray background • Toggle on/off with the task bar icon 17
  • 19. Show whitespace characters • Use menu bar to show grey symbols representing whitespace characters • Space, tab, carriage return, new line, etc. 18
  • 20. Code formatting • Shift left / right • Correct Indentation • Format • auto formats the entire source • properly indents throughout 19
  • 22. Commenting code • Highlight multiple rows • Click CTRL+ / to comment • Click CTRL + / to uncomment • For /* style block commenting, use CTRL+SHIFT+/ 21
  • 23. Open Declaration • From context menu, or F3: opens declared method location • If in another file (or header), the file must be on the search path • Also depends on the type of project you are using – MVS Subproject, z/Unix Subproject, C/C++ project, zFolder, etc. 22
  • 24. Quick Outline • Right Click → Quick Outline • Shows a searchable outline of the source member • Type in the text field to search methods and types 23 Enter search text here Filtered Results
  • 25. Call Hierarchy • Right Click → Open Call Hierarchy • shows the loaded callers and callees for a selected C/C++ function 24 Toggle between caller and callee Hide contants, enums, and variables Show history of call hierarchy
  • 26. Find Dialog • CTRL + F to bring up dialog • Can search case sensitive, forward, backward, on all code, or just that selected. • Regular expressions • Content assist available to help build a search query 25
  • 28. CNTL+SHIFT+L • Shows ALL keyboard shortcuts available • one keyboard shortcut to rule them all 27
  • 30. Content Assist 29 • Allows you to provide context sensitive content completion upon user request • CTRL+Space again to cycle through parser or template proposals • Clicking or pressing Enter on a selected line in the list inserts the selection into the editor. Configure the behavior of the content assist in the C/C++ → Editor → Code Assist preference page.
  • 31. Content Assist Sources • In the C/C++ editor press Ctrl + Space on code to complete. This opens a list of available code completions. • Use the mouse or the keyboard (Up Arrow, Down Arrow, Page Up, Page Down, Home, End, Enter) to navigate and select lines in the list. • Existing methods, properties, fields, etc. • Language constructs • Code templates 30
  • 32. What are Templates? • Simply put, little pieces of code with defined placeholders • Work slightly differently than snippets • Place holders are called variables • Syntax is ${variable_name} • Eclipse based – many languages supported • Java, ANT, COBOL, PL/I, JavaScript, HTML, XML, etc. • Can be imported & exported • Can vary be easy or difficult to setup • Will save you HOURS upon HOURS of hand coding!
  • 33. Creating Templates Continued • Insert Variable – inserts a given variable • Variable is described in the yellow box to the right of its name
  • 34. Syntax Check • Editor parsed syntax checking 33
  • 36. Refactoring 35 Refactoring: make system-wide code changes without affecting the behavior of the program. Refactoring commands are available from the context menus of several views (e.g. Project Explorer, Outline) and editors. Many "apparently simple" commands, such as Move and Rename, are actually refactoring operations, since moving and renaming elements often require changes in dependent files. • Extract a function, constant or local variable • Rename a method, variable or class • Hide a method signature Operations can be previewed for all of the changes resulting from a refactoring action before you choose to carry them out.
  • 37. Extract Constant • Improve performance, and avoid duplicate strings 36
  • 38. Renaming • Easily rename a variable throughout your code • More accurate than find/replace – i.e. try to find and replace a single character variable! 37
  • 39. Source Actions 38 Use the Source menu to perform many actions to modify, remove or generate code automatically. • Toggle a line or block as a comment; on or off. • Format entire source files or fragments. • Correct Indentation • Implement getters & setters • Sort lines The Source menu can be accessed from many context views such as in the C/C++ editor.
  • 41. Static Code Analysis • Software analyzer built into the product • Static code analysis can find common coding errors • Can create scan configurations and check against multiple rules 40
  • 42. Software Analyzer Results • Categorized results can be exported into XML • could import into RTC as work items for remediation • Severity and categories tell you which things to work on first 41
  • 43. Tuning with Performance Advisor • Collects data via tprof/procstack (AIX), or oProfile (linux) 42
  • 44. Summary • Why we have tools – PRODUCTIVITY! • Editor improvements over vi • Refactoring tools • Content Assist, Templating • Static Code Analysis • Performance Advisor • What we did not cover: Debugging • This alone is worthy of this tool in your toolbox 43
  • 45. References • Performance tuning C/C++ applications with Performance Advisor in RDAL 44
  • 47. Thank YouDiscover us at: http://www.strongback.us Socialize with us on Facebook & LinkedIn http://www.facebook.com/StrongbackConsulting http://www.linkedin.com/company/290754 Subscribe to us at http://blog.strongbackconsulting.com