DenkzeitWiki

Suchen:

Aktuelle Änderungen Printable View Änderungen Bearbeiten

EmacsSolutions > RichardGabriel > CodeCompletion > AutoCompletion > TotalCommander > UsefulTools > XmlWithClojure > GuidoVanRossum > ImplicitTyping > HygienicMacros > SyntacticSugar > TabbedBrowsing > ProperTailCall > Recursion > MercurialVsGit > VirtualMachine > LargeScaleAppsClear Trail
Main /

Large Scale Apps

WebApps

LanguageWars
ProgrammingLanguages

DynamicLanguages
RefactoringInDynLangs
BottomUpProgramming

SoftwareEngineering
AgileSoftwareEngineering

UltraLargeScaleSystems
ConcurrentProgramming

Languages don't matter. Technology doesn't matter. It's culture and it is people that matter.

  • What I mean is that smart people working within a common culture is the most important thing in building any "large" application (or any application, for that matter).
    • common culture: It should not be possible to distinguish coders by their code.

The safe answer, for the Big Enterprisy Thing where you have no interest in being on the cutting edge, is C#, Java, PHP, or Python, since there's so much evidence that when it comes right down to it zillions of people are building huge business-critical things in those languages and while they may have problems, they're not life-threatening problems.


IDEs have been the last excuse for many people to not use dynamic languages, and it's a very good excuse. But even without a top-notch Python IDE like Wing (wingware.com), I feel more productive in Python + Emacs than in C# + Visual Studio, or Java + Eclipse. [1]


CodeQuality

"I cannot imagine how the dynamic folks can maintain medium to large projects without refactoring over several iterations over several years of requirement additions and changes."

Perhaps they compose larger software from smaller independent parts, rather than composing large software from large interdependent parts.[2]



BottomUpProgramming

We can focus on reducing the amount of code we manage by using libraries, and there is certainly plenty of that going on in Javaland. We can also add higher-level features to our languages. Doing so reduces the total lines of code required to solve a problem and the cognitive load required to maintain a program.

Think about how many lines of code in Java are wasted on getters and setters that do nothing beyond the standard behavior, and how many times you have to type bar.getFoo() rather than just bar.foo. Yes, I know that Eclipse generates the getters and setters for you, but you still have to read through all of that muck when you’re trying to figure out what a program does.


Some Apps and Figures


LanguageApplicationLOC AppLOC UnitTestsSource
PythonPyPy50k14k[3]
PythonPyPy + Toolchain230k62k[4]
 Windows 200029m [5]
 Windows Vista Beta 250m [6]
 Office30m [7]
 Debian 3.1213m [8]
 Mac OS X 10.489m [9]
 Linux Kernel 1.6.06m [10]
variousAmazon100mio [11]
EmacsLispEmacs941.364 [12]
 Emacs1.225.566with comments 
LispMaxima430.000 [13]

The relationship between lines of code and bugs is completely linear. Fewer code means fewer bugs. [14]




Edit - BackLinks - Tags - Page Hist - Print - Changes - Home - Orphans - Help

Zuletzt geändert am 28.09.2009 22:14 Uhr und seit 7. April 2005 2102 aufgerufen.