background preloader

Articles

Facebook Twitter

Msr-tr-2012-79. IDEs Are a Language Smell. < Other posts 28th of October, 2012 For many years, I've found myself frustrated with the tools of various programming languages, primarily IDEs, previously with Java, currently with Scala. "In the beginning" I used to use a simple text-editor, like Emacs and later JEdit. Finally in 2004 I converted to Eclipse for Java development, an uneasy relationship that fell apart in 2008 when I moved to IntelliJ after trying out NetBeans for a while. In the last year, my relationship with IntelliJ has fallen apart when it comes to Scala development, as it seems IntelliJ is unable to keep up with syntax that is more functional in nature in general, and use of Scalaz in particular.

Being curious, I've also done quite a bit of Clojure development in the last year, and also started to dabble more seriously with Haskell. IDE's as Code Navigators What About the Other Things IDEs Do? Of course there are many other things that IDE's do, like allow for running individual tests, refactor, code complete etc. Process kills developer passion. The other day, at lunch, I had a bit of an epiphany. I also had the pulled pork, but that’s another story. In any event, something came into clarity that had been bothering me below the surface for a long time. Over the past few years, the software industry has become increasingly focused on process and metrics as a way to ensure “quality” code. If you were to follow all the best practices now, you would be: Doing full TDD, writing your tests before you wrote any implementing code. Generating headlines, stories and tasks. In short, you’re spending a lot of your time on process, and less and less actually coding the applications.

The underlying feedback loop making this progressively worse is that passionate programmers write great code, but process kills passion. Now, I’m certainly not advocating some kind of Wild-West approach where nothing is tested, developers code what they want regardless of schedule, etc. What makes parallel programming hard? | Future Chips. Multi-cores are here, and they are here to stay.

Industry trends show that each individual core is likely to become smaller and slower (see my post to understand the reason). Improving performance of a single program with multi-core requires that the program be split into threads that can run on multiple cores concurrently. In effect, this pushes the problem of finding parallelism in the code to the programmers.

I have noticed that many hardware designers do not understand the MT challenges (since they have never written MT apps). Why finding parallelism is hard? Some jobs are easy to parallelize, e.g., if it takes one guy 8 hours to paint a room, then two guys working in parallel can paint it in four hours. There also other programs that are sequential in nature, e.g., two guys will not be able to cook 2x faster than one guy because the task isn’t fully parallelizable: there are inter-task dependencies and the cooks end up waiting for each other at times. Why is debugging difficult? 12 programming mistakes to avoid | Developer World. A car magazine once declared that a car has "character" if it takes 15 minutes to explain its idiosyncrasies before it can be loaned to a friend. By that standard, every piece of software has character -- all too often, right of the box.

Most programming "peculiarities" are unique to a particular context, rendering them highly obscure. Websites that deliver XML data, for example, may not have been coded to tell the browser to expect XML data, causing all functions to fall apart until the correct value fills the field. [ Also on InfoWorld: Find out which 7 programming languages are on the rise in today's enterprise. | Keep up on key application development insights with the Fatal Exception blog and Developer World newsletter. ] But certain programming practices send the majority of developers reaching for their hair upon opening a file that has been exhibiting too much "character. " <code> public String getPostcode(Person person) { String ans= null; if (person ! With this: Principles_and_Patterns.pdf (application/pdf Object) Google executive frustrated by Java, C++ complexity | Developer World.

Today's commercial-grade programming languages -- C++ and Java, in particular -- are way too complex and not adequately suited for today's computing environments, Google distinguished engineer Rob Pike argued in a talk Thursday at the O'Reilly Open Source Conference. Pike made his case against such "industrial programming languages" during his keynote at the conference in Portland, Oregon. [ Keep up with app dev issues and trends with InfoWorld's Fatal Exception and Strategic Developer blogs. ] "I think these languages are too hard to use, too subtle, too intricate. They're far too verbose and their subtlety, intricacy and verbosity seem to be increasing over time," Pike said. "They're oversold, and used far too broadly. " Pike detailed the shortcomings of such languages as a way of describing the goals that he and other Google engineers have for a new programming language they developed, called Go.

"Noise comes with sophistication," he said. "Dynamic typing is not necessarily good.