Integrated Development Environments - The coder’s little helpers

aniseedsplashΛογισμικό & κατασκευή λογ/κού

15 Αυγ 2012 (πριν από 5 χρόνια και 5 μέρες)

392 εμφανίσεις

Integrated

Development
Environments

The coder’s little helpers

Disclaimer: content is biased…

What’s the problem?


The original programming technique:


Code with some text editor (Notepad/Emacs)


Use command
-
line tools to compile, run and debug


The problems:


Coding is very slow and annoying


Errors appears only while compiling or running


Manipulating the code (renaming, moving) is
practically impossible




Maintenance is hell

What is IDE?


Integrated Development Environment


In other words, a tool which not only
allows

programming, but also actually
assists

it


An IDE should allow, for start:


Edit and complete code, highlight syntax and errors


Run and debug


Show help and documentation


Access external tools and libraries easily


Support maintenance


What to look for in an IDE (1)


Basic features:


One tools supports all (edit, compile, run, debug,
deploy, maintain)


Code highlight, completion and hints


Detect errors
before

the compiler, while editing


On
-
line help


Full debugging support (breakpoints, steps) for
all

sorts of programs (apps, web
-
based, DB
-
based…)


Files management

What to look for in an IDE (2)


Project management


Handle project directories and files


Smart build, pack and deploy


Version and configuration control


Common goodies


GUI visual editing and coding


DB access


Some support for commonly used files, like XML,
web pages, properties, and so on


What to look for in an IDE (3)


Code insight


Mark problems, like exceptions and inconsistencies


Auto
-
complete methods, parameters, types …


Suggest solutions


Refactoring and maintenance


Rename, move and safe
-
delete methods and classes


Extract methods, classes and interfaces


Introduce variables, parameters, members…

Java IDEs

Confusing selection

NetBeans / Sun ONE Studio


NetBeans was one of the first IDE’s for Java


Built originally for extensions and plug
-
ins, to
serve as a base platform for tools


An open
-
source project nowadays


Sun adopted and extend it to create “Forte”


Now called “ONE Studio”


A very industry and enterprise oriented tool


Lot’s of wizard, web aids and time
-
to
-
market cutters

NetBeans screenshot

NetBeans pros


Pros


Seasoned, standard, commonly used


Installed on labs

(Forte)


For free (NetBeans and Studio personal edition)


Lot’s of tools


Good GUI editor


DB and XML connectivity


Industry oriented, excellent web and JSP integration


Lot’s of wizards and auto
-
gens for everything


Whole directories “mounting”


no projects needed

NetBeans cons


Cons


Heavy, cluttered, annoying and confusing GUI


Totally industry
-
oriented, little focus on coding
(especially Sun’s Studio)


No refactoring at all


Too many wizards instead of more convenient tools


Plainly put: totally oversized for the common coder


Borland’s JBuilder


Another veteran tool (version 8!), from good
-
old
Borland


Industry
-
focused, with web, XML and DB
supports (Borland’s JDataStore)


But still coder
-
friendly


A products family


varies greatly by price


Has free personal edition


JBuilder’s pros and cons


Pros


Cool tools, including a UML visualizer


Good GUI editor with a DB toolkit


Fairly good code insight


Supports some refactoring (not in personal edition)


Cons


Personal edition is crappy


Heavy


Totally project
-
oriented

IBM’s Eclipse


The new kid on the block


Innovative open
-
source tool and platform


Targeted on promoting open
-
source project


IBM’s counter
-
Microsoft strategy


Code
-
oriented, no extras included


Supposed to be very open for extensions


גד לש םש הז רומא

Eclipse screenshot

Eclipse pros and cons


Pros


Code oriented


Good code insight, supports refactoring, tasks pane…


Totally free, open sourced


Nice, slick, supporting user interface


Standalone executable


all you need is disk space


Cons


Each and every problem a young tool can have


Documentation is for the weak…

IntelliJ’s IDEA


An award
-
winning tool from the Czech republic


Totally code oriented, rather lightweight


Main focus: code insight


Most extensive refactoring support


Real
-
time advises and corrections


Absolute code insight


knows your code better then
you do…


Personal favorite

IDEA screenshot

IDEA pros and cons


Pros


The most assistive tool there is for fast coding


Will actually increase your coding speed and quality


Excellent GUI, and also totally keyboard
-
driven


Full code formatting and refactoring tools


Cons


Almost nothing else then coding and basic features


Totally project
-
oriented


Not for free


academic license
100
$


But worth it!

C# and .NET

Microsoft’s copycat

The C# story


Originally, Microsoft wanted to adopt Java
instead of the uncomfortable C++


But, wanted to adjust it to be MS
-
specific…


Sun sued them for copyrights violation and won


Instead, Microsoft developed their own Java
-
like
language (C#) and platform (.NET)


The most amazing shooting
-
ones
-
own
-
foot ever in
the software industry…

C# / .NET spec


Very much like Java in syntax


Garbage collected


Uses intermediate byte code


Has “assemblies”


jar
-
like files


Powerful reflection and cleaner properties


Foreach hack for collections


Everything is connected


transparent XML and
DB access, and similar features


C# / .NET pros and cons


Pros


Supposed to be similar
-
but
-
better to Java


Transparent access to lot’s of technologies by .NET


It’s Microsoft…


Cons


Young, immature, buggy technology


Visual Studio
7
has no coding or refactoring support


It’s Microsoft…

C++

“an octopus made by nailing extra legs
onto a dog”

C++


Most common OOP language in the industry


Even nowadays


Some would disagree on the OOP thing…


Main IDE’s


On windows: Microsoft Visual Studio


On Linux: KDE (K’s Development Environment)


Both have little support in anything other then basic
coding and GUI editing

C++ pros and cons


Pros


Industry language


Powerful, fast, native


Enough rope to hang yourself…


Good windows support without getting into C#


Cons


Unsafe, buggy, dangerous language


You have to manage memory (and everything else)
by yourself


Tools are lame and unsupportive

Off the beaten track

Some other interesting languages

SmallTalk


The original OOP language


Industry version back at the 80’s!


Everything is an object


Including the classes, numbers, strings, symbols…


Supports parameterized blocks (closures) and
rich foreach methods


Clean, almost
-
human syntax


table at: ‘IL’ put: ‘Israel’

SmallTalk pros and cons


Pros


An intriguing, special language


SmallTalk has almost no deployment problems


Many tools are free and support browsing and
refactoring extensively


Cons


Unfamiliar, different language and working style


Requires much learning for a non
-
industry tool

Python


An object
-
oriented scripting language


Really object
-
oriented, not like Perl or VB


Object are hashes


total reflection…


Also supports closures and regular expressions


Many available packages and extensions


Considered “the second coming” by
enthusiastics and other fanatics

Python pro and cons


Pros


A scripting lang., with all its strengths


Cons


A scripting lang., with all its weaknesses

The shoemaker has no shoes


Software writers keep preaching to the world to
use specialized software


You wouldn't manage a shop with a text editor…


But few software engineers actually harness the
power of the computer to their
-
own needs


… But you do manage your code with a text editor!


The code is your shop


use the most powerful
and convenient tools (for you) you can get.

A reminder

“The vices that makes a good programmer
are: laziness, impatience and vanity”



Larry Wall


Be lazy!