<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:osnews="http://www.osnews.com/rss2#">
	<channel>
		<title>OSNews: </title>
		<link>http://www.osnews.com/story/26699/The_rise_and_fall_of_programming_languages_in_2012</link>
		<description>Exploring the Future of Computing</description>
		<language>en-us</language>
		<copyright>Copyright 2001-2013, David Adams</copyright>
		<webMaster>adam+nospam@osnews.com</webMaster>
		<lastBuildDate>Sat, 25 May 2013 18:35:02 GMT</lastBuildDate>
		<image>
			<url>http://www.osnews.com/images/osnews.gif</url>
			<title>OSNews.com</title>
			<link>http://www.osnews.com</link>
		</image>
		<item>
			<title>It does NOT mention C#</title>
			<link>http://www.osnews.com/thread?548794</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548794</guid>
			<description>C# dulls the mind.<br />
<br />
Would anyone use Objectionable-C were it not required for Apps for Apple?<br />
<br />
Java is cross-platform and consistent, but Android and some web' apps need it.<br />
<br />
FORTRAN, nor its more malignant sibling, COBOL, aren't dead yet.<br />
<br />
C comes closest to the hardware, a high level assembler.  C++ is nonplussed.  Scriptography needs simplicity and flexibility, so Python is squeezing out the competitors.<br />
<br />
I like the a-b-c's, Awk, bash, C.</description>
			<pubDate>Tue, 15 Jan 2013 01:16:00 GMT</pubDate>
			<author>donotreply@osnews.com (tomz)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>Renaissance?</title>
			<link>http://www.osnews.com/thread?548795</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548795</guid>
			<description>Nobody expects a C++ renaissance.<br />
<br />
Even so, it's a bit premature to declare anything given C++ has only just been standardized and compiler support is traditionally slow.</description>
			<pubDate>Tue, 15 Jan 2013 01:52:00 GMT</pubDate>
			<author>donotreply@osnews.com (kwan_e)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE: It does NOT mention C#</title>
			<link>http://www.osnews.com/thread?548799</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548799</guid>
			<description><div class="cquote"><br />
FORTRAN, nor its more malignant sibling, COBOL, aren't dead yet.<br />
 </div><br />
<br />
Fortran is the correct spelling, and it's been the correct spelling since Fortran 90 was ratified some 23 years ago.<br />
<br />
BTW, what language were you trying to use when you composed the above sentence?</description>
			<pubDate>Tue, 15 Jan 2013 03:05:00 GMT</pubDate>
			<author>donotreply@osnews.com (kargl)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE: It does NOT mention C#</title>
			<link>http://www.osnews.com/thread?548802</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548802</guid>
			<description>I'm with you on everything except Objective-C -- what's wrong with it in your estimation?<br />
<br />
To me it's a winner:  all the benefits of C, combined with an object-orientation system with a simple, smalltalk-like syntax and dynamic dispatch.</description>
			<pubDate>Tue, 15 Jan 2013 03:39:00 GMT</pubDate>
			<author>donotreply@osnews.com (Hypnos)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE: Renaissance?</title>
			<link>http://www.osnews.com/thread?548803</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548803</guid>
			<description>Renaissance? What for? It never died! <img src="/images/emo/smile.gif" alt=";)" /></description>
			<pubDate>Tue, 15 Jan 2013 04:05:00 GMT</pubDate>
			<author>donotreply@osnews.com (ebasconp)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548805</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548805</guid>
			<description>I do hope that functional programming languages undergoes a renaissance.  However, in my opinion, imperative style languages have made it harder for people to think that way if they have been coding in an imperative style for too long.  The thought process requires a radical shift which takes time.  For me, it became relatively easy to pick up a new OO or imperative style language.  However, it took me several months of wracking my brain to even begin to program in a functional style.<br />
<br />
immutable vs. mutable data<br />
recursion vs. iteration<br />
closures vs. objects<br />
method dispatch vs. polymorphism<br />
pattern matching vs. switches<br />
composition of functions vs. aggregation of objects<br />
Macros vs. DSLs<br />
Continuations vs. Exceptions/goto/setjmp<br />
<br />
But once you do figure out, it just becomes more elegant.  I don't know how software is going to get faster with multi-cores unless people switch to functional languages.  Lock-based concurrency is just really hard to get right.<br />
<br />
If you don't believe me, read Bartosz Milewski's post on why he switched to FP (and if you don't know who Bartosz is, just google him).<br />
<br />
<a href="http://fpcomplete.com/the-downfall-of-imperative-programming/" rel="nofollow">http://fpcomplete.com/the-downfall-of-imperative-programming/</a><br />
<br />
My own dabble with functional languages has been mostly clojure and scheme based.  Next on my list to learn is haskell.  I tried Scala and didn't like it much (personal choice, it reminded me of perl's TIMTOWTDI and it wasn't really all that functional to which Odersky himself agreed).  Clojure is nice, and it's way more readable than lisp/schemes since it also has [] for vectors and {} for maps.  That little change makes clojure way more readable.  That being said, being hosted on the JVM sucks for system programming.  So that's why I've been learning scheme and next on my list is haskell.</description>
			<pubDate>Tue, 15 Jan 2013 04:49:00 GMT</pubDate>
			<author>donotreply@osnews.com (RareBreed)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>Comment by YEPHENAS</title>
			<link>http://www.osnews.com/thread?548820</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548820</guid>
			<description>How did I know in advance that the article would link to the Tiobe Index?</description>
			<pubDate>Tue, 15 Jan 2013 09:11:00 GMT</pubDate>
			<author>donotreply@osnews.com (YEPHENAS)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE: Renaissance?</title>
			<link>http://www.osnews.com/thread?548829</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548829</guid>
			<description>In the meantime, C code gets replaced by C++ (Windows, gcc, Quake3, ...).</description>
			<pubDate>Tue, 15 Jan 2013 10:21:00 GMT</pubDate>
			<author>donotreply@osnews.com (moondevil)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548830</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548830</guid>
			<description>I started programming in 1975 with BASIC and COMAL and then later Pascal, FORTRAN, COBOL and assembly language at university.  On the third year of university, I was taught LISP and was immediately sold.  I have also used C, Java, Scheme, ML, Haskell and a dozen less known languages.  I tend to use mainly Standard ML.  Though it is not purely functional and rather less advanced than Haskell, I like its simplicity: I find that Haskell has evolved to a testbench for weird language and type features so people can write extremely generic programs that you need a PhD to understand.<br />
<br />
Standard ML is, however, rather dated.  Some attempts at revising it has been made, but they have, IMO, failed mainly by trying to add too many new features to the language.  Then there are what I would call misguided derivatives (O'Caml and F#) that add object-oriented features to the language.  I would rather see a minimal update that solves some of the more pressing problems (such as lack of Unicode support) and a more modern standard library.  And parallelism, of course.</description>
			<pubDate>Tue, 15 Jan 2013 10:21:00 GMT</pubDate>
			<author>donotreply@osnews.com (torbenm)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548835</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548835</guid>
			<description>The functional programming is going to be just another tool of multi-paradigm programming languages, I think.<br />
<br />
From my enterprise experience I think functional programming has more chances of success by being integrated into mainstream languages (C#, Scala, ...) as pure functional only.<br />
<br />
People finally discovered that single paradigm languages are not a good idea.</description>
			<pubDate>Tue, 15 Jan 2013 10:33:00 GMT</pubDate>
			<author>donotreply@osnews.com (moondevil)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[2]: It does NOT mention C#</title>
			<link>http://www.osnews.com/thread?548845</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548845</guid>
			<description><div class="cquote">I'm with you on everything except Objective-C -- what's wrong with it in your estimation?<br />
<br />
To me it's a winner:  all the benefits of C, combined with an object-orientation system with a simple, smalltalk-like syntax and dynamic dispatch. </div><br />
<br />
All the drawbacks of C too, unfortunately. <br />
<br />
I really wish Apple would take Cyclone (<a href="http://cyclone.thelanguage.org/" rel="nofollow">http://cyclone.thelanguage.org/</a>), which is basically C done right, lash it to their existing OO mechanism, and call it Objective-C 3.0. It wouldn't be perfect (e.g. error handling would still suck), but it'd address [Obj]-C's single biggest weakness (safety) and with luck help drive the wider adoption of 'safe C' dialects on other platforms too (something long overdue).</description>
			<pubDate>Tue, 15 Jan 2013 11:59:00 GMT</pubDate>
			<author>donotreply@osnews.com (hhas)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[3]: It does NOT mention C#</title>
			<link>http://www.osnews.com/thread?548847</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548847</guid>
			<description>Can Cyclone compile ANSI C code?  If not, I don't think it will ever gain traction, so would not be worth including in a new Obj-C.<br />
<br />
The beauty of Obj-C is that you have standard C (with all of its warts), plus an elegant OO system that includes all the niceties of a modern OO language.  This gives you one toolchain for the entire OS stack, from kernel up to web services.</description>
			<pubDate>Tue, 15 Jan 2013 12:21:00 GMT</pubDate>
			<author>donotreply@osnews.com (Hypnos)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[2]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548850</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548850</guid>
			<description><div class="cquote">People finally discovered that single paradigm languages are not a good idea. </div><br />
<br />
I disagree. Maintaining a clear, precise focus is a Very Good Thing (see: <i>Coupling and Cohesion 101</i>). You never see a joiner using the same tool to do everything from slice wood to turn screws to drive nails to apply varnish. There's a reason for that.<br />
<br />
I think the real problem is developers not being able to hop quickly and effortlessly between different languages within a project. That may be partly down to bridging and tools not being good enough to allow seamless mixing and matching. But I suspect the biggest barrier is developers themselves lacking the mental agility to switch between languages and idioms. That, compounded by a self-indulgent fondness for inventing complex solutions using tools they already know rather than seeking out simple solutions involving tools they don't. The modern trend for Computer Science courses to silently retool as Software Engineering, and from there to lowest-common-denominator Java diploma mills, probably doesn't help either; but that's another debate.</description>
			<pubDate>Tue, 15 Jan 2013 12:37:00 GMT</pubDate>
			<author>donotreply@osnews.com (hhas)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[3]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548852</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548852</guid>
			<description>I share the same opinion, although I do like multi-paradigm languages.<br />
<br />
I loathe the way some developers seem to try to bend a given language to use it in ever conceivable scenario.<br />
<br />
Don't mix Software Engineering with CS names. My university degree when I took it, was called Software Engineering in my mother language, but the actual contents were what is known as CS in other countries.</description>
			<pubDate>Tue, 15 Jan 2013 12:47:00 GMT</pubDate>
			<author>donotreply@osnews.com (moondevil)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[4]: It does NOT mention C#</title>
			<link>http://www.osnews.com/thread?548861</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548861</guid>
			<description><div class="cquote">Can Cyclone compile ANSI C code?  If not, I don't think it will ever gain traction, so would not be worth including in a new Obj-C. </div><br />
<br />
I think that would depend on the particular piece of code. The following might help:<br />
<br />
<a href="http://cyclone.thelanguage.org/wiki/Cyclone%20for%20C%20Programmers/" rel="nofollow">http://cyclone.thelanguage.org/wiki/Cyclone%20for%20C%2...</a><br />
<br />
OTOH, Cyclone already has an 'extern &quot;C&quot;' feature for interfacing to C code, so it wouldn't be a big leap to extend that to Obj-C 2.0, which could be kept around for as long as needed. There's also the option of cross-compiling - I suspect with backing from the likes of Apple and LLVM it wouldn't take long for big improvements to appear there. The 'Porting C code to Cyclone' section of the Cyclone user manual has more info:<br />
<br />
<a href="http://cyclone.thelanguage.org/wiki/User%20Manual/" rel="nofollow">http://cyclone.thelanguage.org/wiki/User%20Manual/</a><br />
<br />
Really, at age 40-something it's long past time C grew up and stopped behaving like a sloppy, stroppy teenager. The question is, who has the motivation to drag it up by its bootstraps? MS has no need to do so since it's already invested in C# and C++. The Linux world won't push it forward either, since it's even more sloppy and stroppy than C is. <br />
<br />
The only real hope (for better or worse) is Apple, since C remains a foundation stone of their whole platform and therefore developer community, so as more (often less skilled) developers take up Cocoa development, the more of a liability C's flaws become. To their credit they have been trying to modernize the Obj-C language a bit, but so far the front-of-house changes are just nibbling at the edges. OTOH, now the move to LLVM is done, they're in a much stronger position to aggressively innovate. <br />
<br />
Remember, Apple have pulled this sort of trick off before, in the transition from 'Mac' OS 9 to 'Mac' OS X. It'd be nice to see Apple demonstrate the same sort of boldness in their tool chain that they've shown in their hardware design and supply chain to such great success.<br />
<br />
<div class="cquote">The beauty of Obj-C is that you have standard C (with all of its warts), plus an elegant OO system that includes all the niceties of a modern OO language. </div> <br />
<br />
Personally I really wish Dylan had worked out - it had a far more powerful and elegant OO model than ObjC/Smalltalk. Infinitely better macro system than [Obj]C too. <br />
<br />
<br />
<div class="cquote">This gives you one toolchain for the entire OS stack, from kernel up to web services. </div><br />
<br />
OTOH, even Unix Philosophy says it's better to have a compliment of dedicated tools that play well together than a single Swiss-army tool that tries to do it all. And OS X is nothing if not opportunist, happy to integrate whatever works.</description>
			<pubDate>Tue, 15 Jan 2013 13:49:00 GMT</pubDate>
			<author>donotreply@osnews.com (hhas)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[4]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548867</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548867</guid>
			<description><div class="cquote">Don't mix Software Engineering with CS names. </div><br />
<br />
I'm absolutely for the existence Software Engineering courses; after all, there's a huge need in today's world for applied software engineers, and plenty folks who desire such jobs. I just hate it when such courses call themselves 'Computer Science' [1] when the curriculum clearly is not. <br />
<br />
Personally I think a big heaping dose of honesty is needed from universities... and from students too. Everyone's perfectly happy to distinguish between, say, Applied and Theoretical Physics, so why conflate Applied and Theoretical Computing? The only reason I can think of is ego marketing: students want to be software engineers but call themselves 'computer scientists' because that sounds cleverer. <br />
<br />
And so everyone forgets what CS actually is and what it's meant to do: push the boundaries and  [re]define the state of the art. Just as in the sciences, you need a vibrant theoretical community generating new ideas and improvements that can eventually feed into the applied world, otherwise the latter grows close-minded and stagnant. It's not healthy, but I suspect a lot in the programming world isn't what it ought to be.<br />
<br />
<br />
[1] Which should probably be called 'Computer Math', but that's a separate gripe.</description>
			<pubDate>Tue, 15 Jan 2013 14:21:00 GMT</pubDate>
			<author>donotreply@osnews.com (hhas)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[2]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548884</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548884</guid>
			<description>Have you tried F#? It's a Functional Language. Comes in Visual Studio and can be used in MONO.</description>
			<pubDate>Tue, 15 Jan 2013 16:56:00 GMT</pubDate>
			<author>donotreply@osnews.com (Accident)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[3]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548886</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548886</guid>
			<description>Functional languages are beautiful; but getting tied to a specific proprietary platform (.NET framework) is not a good idea.<br />
 <br />
 I would take a look to Jaskell ( <a href="http://jaskell.codehaus.org" rel="nofollow">http://jaskell.codehaus.org</a> ) instead.Edited 2013-01-15 17:18 UTC</description>
			<pubDate>Tue, 15 Jan 2013 17:03:00 GMT</pubDate>
			<author>donotreply@osnews.com (ebasconp)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE: Renaissance?</title>
			<link>http://www.osnews.com/thread?548887</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548887</guid>
			<description><div class="cquote">Nobody expects a C++ renaissance.<br />
 </div><br />
Nobody expects the Spanish inquisition <img src="/images/emo/wink.gif" alt=";)" /> <br />
<br />
Seriously though, I fully agree with you. I can't see how someone could expect a long-time established language like C++ suddenly have a noticeable user surge due to new features being added.<br />
<br />
Also I can't see how javascript could possibly be 'treading water' given how pervasive it's become on the web, not to mention new 'technologies' like HTML5 relying on it.</description>
			<pubDate>Tue, 15 Jan 2013 17:08:00 GMT</pubDate>
			<author>donotreply@osnews.com (Valhalla)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548888</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548888</guid>
			<description>Carmack had a (imo) interesting blog post on functional programming from a C++ perspective:<br />
<br />
<a href="http://www.altdevblogaday.com/2012/04/26/functional-programming-in-c/" rel="nofollow">http://www.altdevblogaday.com/2012/04/26/functional-programming-in-...</a></description>
			<pubDate>Tue, 15 Jan 2013 17:11:00 GMT</pubDate>
			<author>donotreply@osnews.com (Valhalla)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[2]: Renaissance?</title>
			<link>http://www.osnews.com/thread?548890</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548890</guid>
			<description>Maybe for productivity applications, it does not make any sense; but if you plan to wrote something low level, the new features of C++ get you attracted more to the language than before.</description>
			<pubDate>Tue, 15 Jan 2013 17:37:00 GMT</pubDate>
			<author>donotreply@osnews.com (ebasconp)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[4]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548903</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548903</guid>
			<description>except it can be used in MONO which is open source.</description>
			<pubDate>Tue, 15 Jan 2013 20:07:00 GMT</pubDate>
			<author>donotreply@osnews.com (lucas_maximus)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>but Perl may resurrect!</title>
			<link>http://www.osnews.com/thread?548906</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548906</guid>
			<description>into Perl 6, a complete rewrite of Perl that began 12 years ago.</description>
			<pubDate>Tue, 15 Jan 2013 20:26:00 GMT</pubDate>
			<author>donotreply@osnews.com (4biaggi)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[2]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548909</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548909</guid>
			<description><div class="cquote">The functional programming is going to be just another tool of multi-paradigm programming languages, I think. </div><br />
<br />
Agreed. Over the years, I've found very little value in purely-functional languages - but I find a *lot* of value in having functional elements within more traditional procedural or OO languages.</description>
			<pubDate>Tue, 15 Jan 2013 20:33:00 GMT</pubDate>
			<author>donotreply@osnews.com (Delgarde)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[5]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548914</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548914</guid>
			<description><div class="cquote">"<i>Don't mix Software Engineering with CS names. </div><br />
<br />
I'm absolutely for the existence Software Engineering courses; after all, there's a huge need in today's world for applied software engineers, and plenty folks who desire such jobs. I just hate it when such courses call themselves 'Computer Science' [1] when the curriculum clearly is not.  </i>"<br />
<br />
Eh, the line is somewhat blurry. Most CS degrees increasingly include a lot of practical stuff, while CE also covers theory. Not worth making a fuss over, I think.</description>
			<pubDate>Tue, 15 Jan 2013 20:44:00 GMT</pubDate>
			<author>donotreply@osnews.com (Delgarde)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[3]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548921</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548921</guid>
			<description><div class="cquote">"<i>The functional programming is going to be just another tool of multi-paradigm programming languages, I think. </div><br />
<br />
Agreed. Over the years, I've found very little value in <b>OO</b> languages - but I find a *lot* of value in having <b>objects in</b> more traditional procedural or <b>functional</b> languages. </i>"<br />
<br />
Fixed that for ya <img src="/images/emo/wink.gif" alt=";)" /> <br />
<br />
Serious now.<br />
<br />
It's true, pure functional is only a marginal improvement over impure functional. It's sort of like the distinction between weak and strong typing. But just as we prefer strong typing for the guarantees it gives us we should prefer pure functional to impure.</description>
			<pubDate>Tue, 15 Jan 2013 22:09:00 GMT</pubDate>
			<author>donotreply@osnews.com (satsujinka)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[4]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548923</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548923</guid>
			<description>&quot;we prefer&quot;?</description>
			<pubDate>Tue, 15 Jan 2013 22:20:00 GMT</pubDate>
			<author>donotreply@osnews.com (ndrw)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[4]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548927</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548927</guid>
			<description><div class="cquote">It's true, pure functional is only a marginal improvement over impure functional. It's sort of like the distinction between weak and strong typing. But just as we prefer strong typing for the guarantees it gives us we should prefer pure functional to impure. </div><br />
<br />
<br />
Disagree, pure functional is a serious step backward compared to a language that allow you to mix functional with procedural or OO techniques. Seriously, why should I prefer pure-functional when all that gives me is reduced flexibility?</description>
			<pubDate>Tue, 15 Jan 2013 22:39:00 GMT</pubDate>
			<author>donotreply@osnews.com (Delgarde)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[2]: Renaissance?</title>
			<link>http://www.osnews.com/thread?548928</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548928</guid>
			<description><div class="cquote">Seriously though, I fully agree with you. I can't see how someone could expect a long-time established language like C++ suddenly have a noticeable user surge due to new features being added. </div><br />
<br />
And it makes me wonder* about the figures when Java moved from 1.4 to 5 to 6 to 7.</description>
			<pubDate>Tue, 15 Jan 2013 22:54:00 GMT</pubDate>
			<author>donotreply@osnews.com (kwan_e)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[5]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548930</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548930</guid>
			<description>&quot;pure functional&quot; = functional,<br />
&quot;functional&quot; = maybe functional, maybe not - review the code.<br />
<br />
OTOH, I agree that current pure functional languages are too limiting/inconvenient in practice.</description>
			<pubDate>Tue, 15 Jan 2013 23:23:00 GMT</pubDate>
			<author>donotreply@osnews.com (ndrw)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548935</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548935</guid>
			<description>I love functional programming.<br />
But imperative programming more matches the way that people actually think.  People think in concrete, step-by-step terms: I get out of bed, I take a shower, I brush my teeh, I comb my hair, I get dressed, I eat breakfast, I leave the house, I go to work, I park my car, I walk into the office, I etc, etc, etc.  In order to achieve a particular goal, people do each step in a particular order.<br />
<br />
Functional (and logic) programming, is more atuned to abstract/mathematical thinking (and the more declarative the programming is, the more it becomes like math).  Most people are not adept at that.</description>
			<pubDate>Tue, 15 Jan 2013 23:53:00 GMT</pubDate>
			<author>donotreply@osnews.com (MollyC)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[5]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548936</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548936</guid>
			<description><div class="cquote">Everyone's perfectly happy to distinguish between, say, Applied and Theoretical Physics, so why conflate Applied and Theoretical Computing? </div><br />
<br />
That is because the boundary between Applied and Theoretical Computing is blurred.<br />
<br />
&quot;If I apply this patch, this should theoretically work&quot;</description>
			<pubDate>Tue, 15 Jan 2013 23:53:00 GMT</pubDate>
			<author>donotreply@osnews.com (kwan_e)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[5]: It does NOT mention C#</title>
			<link>http://www.osnews.com/thread?548956</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548956</guid>
			<description>Your comment has a number of interesting points; I'll try to respond:<br />
<br />
1) There's so much C code, and C retains such popularity, that porting is a non-starter IMHO.  However, 'extern &quot;C&quot;' could work if perchance Cyclone were to catch on.  But, as discussed on OSNews and elsewhere, &quot;good enough&quot; with inertia behind it is far more powerful than &quot;better&quot; without inertia.  Even withing Apple, it's such a huge company now, their current toolchain has a lot of momentum, and there's no Steve Jobs anymore to impose big changes of direction.<br />
<br />
2) Whether Dylan has a more elegant OO model than Smalltalk is a matter of taste.  On a practical level, what can macros do that Obj-C categories cannot?<br />
<br />
3) To &quot;play well together&quot; in the Unix philosophy means to have a simple common data format, the text file/stream.  When it comes to system programming interfaces in Unix, this means SysV-like APIs in C.  Most crusty old Unix types prefer to just code in C rather than have multiple language bindings and a more complex software stack; Obj-C is a viable compromise to many since it retains the &quot;virtues&quot; of C while including a usable OO model.<br />
<br />
It seems to me there are two design questions here: (a) whether C is worth continuing to use as a systems programming language and (b) what should the higher levels of the toolchain look like -- many languages (hopefully with a common runtime, e.g. LLVM) or just one tool like Obj-C?</description>
			<pubDate>Wed, 16 Jan 2013 02:58:00 GMT</pubDate>
			<author>donotreply@osnews.com (Hypnos)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[5]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548966</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548966</guid>
			<description>If you'd like to be helpful, please point me to someone who prefers weak typing to strong typing. Then put that in context of everyone who prefers the reverse.<br />
<br />
Please note that this is not a comment on the preference for dynamic or not. A dynamic language can still be weakly or strongly typed underneath (Python for instance is a strongly typed dynamic language.)<br />
<br />
&quot;We&quot; in this case is in reference to the general populace of programmers.</description>
			<pubDate>Wed, 16 Jan 2013 06:02:00 GMT</pubDate>
			<author>donotreply@osnews.com (satsujinka)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[5]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548967</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548967</guid>
			<description>Exactly because it reduces flexibility. That's why I compared it to weak/strong typing.<br />
<br />
Both strong typing and &quot;pure functional&quot; provide additional guarantees about the content of some object (values/variables and functions respectively.) In the case of pure functions, the guarantee is that they will always be referentially transparent and have no side effects. It's simply impossible to construct something which isn't. This is a valuable guarantee, at least for a compiler, due to the optimizations such a function allows.</description>
			<pubDate>Wed, 16 Jan 2013 06:06:00 GMT</pubDate>
			<author>donotreply@osnews.com (satsujinka)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[6]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?548968</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?548968</guid>
			<description>In very simple terms, you've gotten the core of my argument.<br />
<br />
Personally, I don't find the limitations of a pure language to be particularly restrictive. I mean, I am most productive in Haskell.</description>
			<pubDate>Wed, 16 Jan 2013 06:11:00 GMT</pubDate>
			<author>donotreply@osnews.com (satsujinka)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[2]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?549068</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?549068</guid>
			<description>I would disagree here.  The problem is that it only takes one mutable piece of data or one function with a side effect to ruin an entire call chain. Mixing and matching pure FP with anything else renders your code non-pure and thus you may as well not have written in an FP style at all.<br />
<br />
Less seriously, it forces users to think multiple ways.  I saw many java developers complain vehemently about the upcoming lambdas in Java 8.  So one developer might write code in an OO style, and another in an FP style, and now everybody has to learn both ways of doing it.</description>
			<pubDate>Wed, 16 Jan 2013 20:46:00 GMT</pubDate>
			<author>donotreply@osnews.com (RareBreed)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[3]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?549069</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?549069</guid>
			<description>Perhaps FP is a special case, but it only takes one mutable piece of data or a function with a side effect to make it useless (in a concurrent/parallel context).<br />
<br />
So I agree that single paradigm languages have their place.  Also, many of the things done in OOP can be done in FP but using a different way of thinking.<br />
<br />
And I think that is the crux of the problem.  People don't want to have to learn a new way of thinking.  They are ok with learning new API's or even new languages that fit their mold (OO, imperative, Relational, logical etc), but having to think in a new way is too much work for many people.</description>
			<pubDate>Wed, 16 Jan 2013 20:50:00 GMT</pubDate>
			<author>donotreply@osnews.com (RareBreed)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[6]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?549098</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?549098</guid>
			<description>There are many programmers out there who prefer weak typing, so &quot;general populace of programmers&quot; is, well, generalization.<br />
<br />
I'm somewhere in between. Sometimes I like strong typing (large models with a simple structure), sometimes not (complex or dynamic models). A quick exercise: how (and why) would you classify a small hungry, short-haired, black cat?<br />
<br />
Also, while dynamic languages may or may not be strongly typed (semantically), they are all have to be weakly typed during compilation - the only time strong typing actually matters.</description>
			<pubDate>Thu, 17 Jan 2013 00:10:00 GMT</pubDate>
			<author>donotreply@osnews.com (ndrw)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[2]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?549101</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?549101</guid>
			<description><div class="cquote">I get out of bed, I take a shower, I brush my teeh, I comb my hair, ... </div><br />
<br />
If that was how OO programs are written the world would be better. Most programs (and toolkits) look more like this:<br />
<br />
&quot;[You,] get out of bed! Take shower! Brush teeth! Comb your hair!&quot;<br />
<br />
or even:<br />
&quot;take a comb, raise your hand, do {stroke your hair} until (enough)&quot;.<br />
<br />
Calling other object's &quot;doSomething&quot; or &quot;setSomething&quot; methods is modern equivalent of calling &quot;goto&quot;. A single setter may look innocent but try to sequence a number of them and you will have to deal with all the complexity (structure, sequencing, side effects) that leaked out from the object. That's because the control is no longer inside the object but in a caller of the method.</description>
			<pubDate>Thu, 17 Jan 2013 00:47:00 GMT</pubDate>
			<author>donotreply@osnews.com (ndrw)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[7]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?549105</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?549105</guid>
			<description>Of course it is a generalization, however, it's a perfectly valid one. There are very concrete reasons to prefer strong typing to weak typing in nearly all cases.<br />
<br />
If anything, complex models dictate strong typing. If simply to give you appropriate guarantees and sign posts for navigating the model. It's simple models in which adhering to rules isn't so important. For example, your cat is a simple model having just 4 properties to vary on (plus animal type, if we're dealing with other animals.)<br />
<br />
A strongly typed language is a strongly typed language, no matter when the enforcement occurs. Static types merely help catch violations sooner, but you're still not allowed to violate the system if we check later.</description>
			<pubDate>Thu, 17 Jan 2013 01:04:00 GMT</pubDate>
			<author>donotreply@osnews.com (satsujinka)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[8]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?549115</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?549115</guid>
			<description>No generalizations are valid. Especially when there are whole groups of people thinking otherwise (here: for very concrete reasons prefer weak typing to strong typing in nearly all cases).<br />
<br />
Strong typing works extremely well with abstract single-function objects (a number, a string, a list, a set) and fails *badly* at any attempt of modeling real objects. In a way, you have admitted that yourself - a &quot;cat&quot; from my example would be an &quot;Object&quot; type, distinguished only by its fields, not the type.<br />
<br />
Strong typing implies enforcement, otherwise it wouldn't be &quot;strong&quot;. Preferably at compile time, and at least at runtime, although many advocates of strong typing would disagree with that. The problem with your example is that Python doesn't even enforce types at runtime - a &quot;type&quot; (class) is just a method of reusing implementation. At runtime the interpreter is only interested whether the field/method you're accessing is defined or not - something that may and does change at any the time.</description>
			<pubDate>Thu, 17 Jan 2013 02:15:00 GMT</pubDate>
			<author>donotreply@osnews.com (ndrw)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[9]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?549117</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?549117</guid>
			<description><div class="cquote">No generalizations are valid. </div><br />
<br />
I see what you did there.</description>
			<pubDate>Thu, 17 Jan 2013 02:50:00 GMT</pubDate>
			<author>donotreply@osnews.com (kwan_e)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[9]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?549118</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?549118</guid>
			<description>Your cat example was simple, so it deserves a simple implementation. If you'd wanted me to model the complete biological workings of a cat; that'd be an example of a complex model that would very much have components that differ in type. And I'd almost certainly want them to be strongly typed; no using a lung as a leg!<br />
<br />
All current development models fail horribly at modeling the real world. Weak typing gives you no leverage here. Dynamic typing gives you no leverage. Structured, functional, or object oriented paradigms give you no leverage. The world is a messy graph that you can't simplify into something nice and neat.<br />
<br />
Python is a strong language. There isn't any debate about this. It's simply a fact.</description>
			<pubDate>Thu, 17 Jan 2013 02:56:00 GMT</pubDate>
			<author>donotreply@osnews.com (satsujinka)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[8]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?549119</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?549119</guid>
			<description><div class="cquote">If anything, complex models dictate strong typing. </div><br />
<br />
If we go meta and take a look at this whole conversation (which has gone on since the invention of those terms...<br />
<br />
The fact that you can categorize something as strong or weak typing, but differentiate it from compile-time or run-time typing, and differentiate it from static and dynamic typing, and the conflation with OO, says something about the inherent flaws of any kind of language typing.<br />
<br />
Really the conversation should be about:<br />
<br />
Strong, compile-time, static typing vs<br />
Strong, compile-time, dynamic typing vs<br />
Strong, run-time, static typing vs<br />
Strong, run-time, dynamic typing vs<br />
Weak, compile-time, static typing vs<br />
Weak, compile-time, dynamic typing vs<br />
Weak, run-time, static typing vs<br />
Weak, run-time, dynamic typing.</description>
			<pubDate>Thu, 17 Jan 2013 03:07:00 GMT</pubDate>
			<author>donotreply@osnews.com (kwan_e)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[9]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?549134</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?549134</guid>
			<description>Sadly, that's not even a comprehensive listing of possible type systems...<br />
<br />
Of course, GÃ¶del's incompleteness theorems apply to type systems. So any type system is going to be incomplete or inconsistent. Generally speaking, the most extreme strong type system is going to be incomplete and a very weak type system (say that has no types) is going to be inconsistent. Compile/runtime follows the same sort of pattern (in that compile time checked systems will filter out some &quot;valid&quot; programs and runtime checked systems will have some inconsistent programs [corner cases where there's no way to figure out how to operate on what we have].)<br />
<br />
Static and dynamic are the outliers here. Instead of being a characteristic of the expressiveness of a type system, static/dynamic is more about the actual expression of the types. They're more akin to SVO vs SOV vs VSO vs ... sentence structures then they are to choices in strong/weak or compile/runtime.*<br />
<br />
*Dynamic languages are often conflated with runtime type checking, but this is technically unnecessary. Runtime checking is easier than compile time for dynamic languages (due to names/variables having no defined type,) but (for example) many lisp compilers have done compile time type checking en route to optimization.</description>
			<pubDate>Thu, 17 Jan 2013 05:22:00 GMT</pubDate>
			<author>donotreply@osnews.com (satsujinka)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[10]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?549185</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?549185</guid>
			<description>The &quot;cat&quot; example was simple object yet most type systems would fail to classify it properly. Real objects have multiple &quot;types&quot; in many hierarchies, often changing over time.<br />
<br />
As for python - there was never any debate about it. It has always been a weakly typed language by most definitions (admittedly, not yours). In fact, Guido had to often defend his choice against legions of people who prefer strong typing:<br />
<br />
<a href="http://www.artima.com/intv/strongweak.html" rel="nofollow">http://www.artima.com/intv/strongweak.html</a></description>
			<pubDate>Thu, 17 Jan 2013 19:54:00 GMT</pubDate>
			<author>donotreply@osnews.com (ndrw)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[11]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?549190</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?549190</guid>
			<description>Then why does the second page of what you linked explicitly say it's not weak typing? Why does Wikipedia's page say Python is strongly typed? Why do all of c2's pages on typing say Python is strongly typed?<br />
<br />
No, I'm afraid you're wrong. Python is strongly typed. It's just checked at runtime.<br />
<br />
How would most type systems fail to classify a cat properly?<br />
<br />
data FurType = Short | Long | Medium<br />
data Color = Black | Orange | White | Tabby | ...<br />
data Cat = Cat { hungry :: Bool, fur :: FurType, color :: Color, ... }<br />
<br />
mycat = Cat True Short Black ...<br />
<br />
It isn't that cat's are hard to design a strong model for. It's that there's no point in doing it because it's irrelevant. The following is just as sufficient for this.<br />
<br />
(True,&quot;short&quot;,&quot;black&quot;,...)</description>
			<pubDate>Thu, 17 Jan 2013 20:57:00 GMT</pubDate>
			<author>donotreply@osnews.com (satsujinka)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[12]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?549291</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?549291</guid>
			<description><div class="cquote">Then why does the second page of what you linked explicitly say it's not weak typing?<br />
 </div><br />
<br />
Easy enough to check:<br />
&quot;Weak typing is not really a fair description of what's going on in Python.&quot;<br />
<br />
Which is fair given that Python uses types for implementation reuse and error reporting. This of course doesn't stop me from adding a method &quot;bark()&quot; to an existing class &quot;cat&quot;.<br />
<br />
<div class="cquote">Why does Wikipedia's page say Python is strongly typed?<br />
 </div><br />
<br />
It also says that Lisp is strongly typed (a language specifically designed for making all non-primitive values untyped). The reason they give is that it doesn't do type coercion, which is IMHO a stupid way of defining &quot;strong typing&quot;. But I will accept that, so if you wish, we may end the discussion here.<br />
<br />
<div class="cquote">How would most type systems fail to classify a cat properly?<br />
<br />
data FurType = Short | Long | Medium<br />
data Color = Black | Orange | White | Tabby | ...<br />
data Cat = Cat { hungry :: Bool, fur :: FurType, color :: Color, ... }<br />
<br />
mycat = Cat True Short Black ...<br />
 </div><br />
<br />
Interesting (really!). But note that Haskell's type system is definitely not what people would call &quot;most type systems&quot;.<br />
<br />
And even Haskell can't make a &quot;cat&quot; object sometimes hungry, sometimes not. (True, this goes deeper than the type system in Haskell).</description>
			<pubDate>Fri, 18 Jan 2013 17:01:00 GMT</pubDate>
			<author>donotreply@osnews.com (ndrw)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[13]: Comment by RareBreed</title>
			<link>http://www.osnews.com/thread?549346</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?549346</guid>
			<description><a href="http://c2.com/cgi/wiki?WeakAndStrongTyping" rel="nofollow">http://c2.com/cgi/wiki?WeakAndStrongTyping</a><br />
<a href="http://c2.com/cgi/wiki?TypingQuadrant" rel="nofollow">http://c2.com/cgi/wiki?TypingQuadrant</a><br />
<a href="http://en.wikipedia.org/wiki/Weak_typing" rel="nofollow">http://en.wikipedia.org/wiki/Weak_typing</a><br />
<br />
Type coercion is a generally accepted criteria of strong/weak. Not the only one, but it's an easy to use tool.<br />
<br />
Strong/Weak: Does the type of a value change? Or, is type checking even done?<br />
<br />
Type systems are weak if the answers fall closer to &quot;all the time and never&quot; and type systems are strong if &quot;never and always&quot;. Irrespective of when the checking is done. Mind you, this is a gradient. The exact point when a language ceases to be strong and becomes weak is fuzzy (and may effectively change depending on what subset of the language we're talking about.)<br />
<br />
IMHO, adding cat.bark() isn't weak, so much as open typing (not sure this is an actual phrase, but I've heard people describe class systems as &quot;open&quot; when you're allowed to add things after definition.) Since it's not really that cat is no longer a Cat, it just got new abilities.<br />
<br />
And as you say yourself, Lisp's data abstractions are untyped. But when there are types (e.g. primitives, functions, macros,) pretty much all Lisps use strong typing (some even insert static typing when they can.) In this case, it's sort of a value judgement. Is untyped the same as weakly typed? After all something that is untyped doesn't even have a notion of type to change, but it may have a structure that does get checked (which amounts to type checking.)</description>
			<pubDate>Fri, 18 Jan 2013 22:38:00 GMT</pubDate>
			<author>donotreply@osnews.com (satsujinka)</author>
			<category>Comments</category>
		</item>
	</channel>
</rss>
