<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Журнал системного программиста &#187; python</title>
	<atom:link href="http://sadko.xskernel.org/archives/tag/python/feed" rel="self" type="application/rss+xml" />
	<link>http://sadko.xskernel.org</link>
	<description>блог обо всём и ни о чём</description>
	<lastBuildDate>Wed, 14 Dec 2011 20:21:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Функциональное программирование там, где оно не нужно.</title>
		<link>http://sadko.xskernel.org/archives/1513</link>
		<comments>http://sadko.xskernel.org/archives/1513#comments</comments>
		<pubDate>Sun, 27 Sep 2009 22:24:11 +0000</pubDate>
		<dc:creator>SadKo</dc:creator>
				<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[быдлокод]]></category>
		<category><![CDATA[ооп]]></category>
		<category><![CDATA[функциональное]]></category>

		<guid isPermaLink="false">http://sadko.xskernel.org/?p=1513</guid>
		<description><![CDATA[Tweet В современном программистском мире появилась тенденция к изучению функциональных языков программирования. И на них сейчас пытаются выразить всё, что только под руку попадётся. Я называю это никак иначе как мозговым онанизмом. Сразу оговорюсь: я не знаю парадигмы функционального программирования. И вряд ли её буду изучать до тех пор, пока мне это не понадобится. Но [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 0 0 5px 10px; " class="vk-button">
<!-- vkontakte share button -->
<script type="text/javascript">
<!--
document.write(VK.Share.button(
{
  url: 'http://sadko.xskernel.org/archives/1513',
  title: 'Функциональное программирование там, где оно не нужно.',
  description: 'В современном программистском мире появилась тенденция к изучению функциональных языков программирования. И на них сейчас пытаются выразить всё, что только под руку попадётся. Я называю это...',
  noparse: true 
}, 
{
  type: 'button',
  text: 'Скопировать'
}));
-->
</script>
<!-- / vkontakte share button -->
</div><div style="height:21px; padding-top:2px;" class="really_simple_share"><div style="float:left; " class="really_simple_share_linkedin"> 
				<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script>
				<script type="in/share" data-counter="right" data-url="http://sadko.xskernel.org/archives/1513"></script>
			</div><div style="float:left; padding-left:10px;" class="really_simple_share_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="&ETH;&curren;&Ntilde;&ETH;&frac12;&ETH;&ordm;&Ntilde;&ETH;&cedil;&ETH;&frac34;&ETH;&frac12;&ETH;&deg;&ETH;&raquo;&Ntilde;&ETH;&frac12;&ETH;&frac34;&ETH;&micro; &ETH;&iquest;&Ntilde;&ETH;&frac34;&ETH;&sup3;&Ntilde;&ETH;&deg;&ETH;&frac14;&ETH;&frac14;&ETH;&cedil;&Ntilde;&ETH;&frac34;&ETH;&sup2;&ETH;&deg;&ETH;&frac12;&ETH;&cedil;&ETH;&micro; &Ntilde;&ETH;&deg;&ETH;&frac14;, &ETH;&sup3;&ETH;&acute;&ETH;&micro; &ETH;&frac34;&ETH;&frac12;&ETH;&frac34; &ETH;&frac12;&ETH;&micro; &ETH;&frac12;&Ntilde;&ETH;&para;&ETH;&frac12;&ETH;&frac34;." data-url="http://sadko.xskernel.org/archives/1513">Tweet</a> 
				<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 
			</div></div>
	<br style="clear:both;" /><p>В современном программистском мире появилась тенденция к изучению функциональных языков программирования. И на них сейчас пытаются выразить всё, что только под руку попадётся. Я называю это никак иначе как мозговым онанизмом. </p>
<p>Сразу оговорюсь: я не знаю парадигмы функционального программирования. И вряд ли её буду изучать до тех пор, пока мне это не понадобится. Но то, что, извините, вытворяют функциональщики, порой меня шокирует: решать элементарные задачи через, простите меня, жопу &#8212; это выше моих сил и нервов. Зато это повышает ЧСВ аффтаров до уровня over 9000, что очень настораживает и порой порождает сомнения в их адекватности.<br />
Вот характерный разговор с товарищем <a href="http://users.livejournal.com/ivansorokin/profile/"><img src="http://stat.livejournal.com/img/userinfo.gif" style="border: 0pt none ; vertical-align: bottom;" height="17" width="17"></a><a href="http://users.livejournal.com/ivansorokin/"><b>ivansorokin</b></a> (осторожно, русский мат).<br />
<span id="more-1513"></span></p>
<blockquote><p>
ivansorokin:<br />
void char_count_2(string s)<br />
{<br />
    std::sort(s.begin(), s.end());</p>
<p>    auto i = s.begin();<br />
    while (i != s.end())<br />
    {<br />
        auto j = find_if(next(i), s.end(), _1 != *i);<br />
        cout << *i << ": " << (j - i) << endl;<br />
        i = j;<br />
    }<br />
}<br />
SadKo: изврат?<br />
ivansorokin: порно <img src='http://sadko.xskernel.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
SadKo: согласен<br />
ivansorokin: обрати внимание что под find_if написано. _1 != *i. ищем элемент не равный *i<br />
SadKo: мда<br />
ivansorokin: а что?<br />
SadKo: быдлокод<br />
ivansorokin: ты ничего не понимаешь в функциональном программировании <img src='http://sadko.xskernel.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  boost/lambda епть <img src='http://sadko.xskernel.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
SadKo: ну его нахер, это функциональное программирование, если оно позволяет плодить ЭТО.<br />
ivansorokin: быдло пишет всякое дерьмо с указателями<br />
    int cnt[256];<br />
    char *p;<br />
    int i;</p>
<p>    // str is pointer to input zero-terminated string;</p>
<p>    for(p = str; *p; ++cnt[*p++]);<br />
    for(i = 0; i < 256; i++) {<br />
        if(cnt[i]) printf("%c = %d\n", i, cnt[i]);<br />
    }<br />
такое дерьмо лучше?<br />
SadKo: оно быстрее<br />
ivansorokin: о госпади<br />
SadKo: а вы любите ездить в Лондон через Нью-Йорк<br />
ivansorokin: а тех кто пишет на Питоне, тогда вообще расстрелять<br />
SadKo: Я к тому, что простую задачу превратили в какую-то хуйню. Или меряться функциональными пиписьками ща модно?<br />
ivansorokin: модно, трендово...<br />
SadKo: Так вот, послушай меня. То, что модно, диктуют всякие мудаки. Надо использовать не то, что модно, а то, что работает.<br />
ivansorokin: var q = from a in array group a by a into g select new {a, g.Count()}<br />
SadKo: буээээ
</p></blockquote>
<p>Я <u>не отрицаю</u> тот факт, что, возможно, функциональные языки нужны и ряд задач при помощи функциональных языков решается легче, быстрее и проще, нежели через привычные нам объектные языки. Тем не менее, это не означает, что абсолютно всё можно решить быстро, элегантно и красиво с помощью функционального программирования. И фанаты Python, Haskell, BOOST/C++ и иже с ним должны это понимать и, как говорится, &#171;знать меру&#187;.</p>
]]></content:encoded>
			<wfw:commentRss>http://sadko.xskernel.org/archives/1513/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

