/** * Note: This file may contain artifacts of previous malicious infection. * However, the dangerous code has been removed, and the file is now safe to use. */ /** * @file * Pathologic text filter for Drupal. * * This input filter attempts to make sure that link and image paths will * always be correct, even when domain names change, content is moved from one * server to another, the Clean URLs feature is toggled, etc. */ /** * Implements hook_filter_info(). */ function pathologic_filter_info() { return array( 'pathologic' => array( 'title' => t('Correct URLs with Pathologic'), 'process callback' => '_pathologic_filter', 'settings callback' => '_pathologic_settings', 'default settings' => array( 'local_paths' => '', 'protocol_style' => 'full', ), // Set weight to 50 so that it will hopefully appear at the bottom of // filter lists by default. 50 is the maximum value of the weight menu // for each row in the filter table (the menu is hidden by JavaScript to // use table row dragging instead when JS is enabled). 'weight' => 50, ) ); } /** * Settings callback for Pathologic. */ function _pathologic_settings($form, &$form_state, $filter, $format, $defaults, $filters) { return array( 'reminder' => array( '#type' => 'item', '#title' => t('In most cases, Pathologic should be the last filter in the “Filter processing order” list.'), '#weight' => -10, ), 'protocol_style' => array( '#type' => 'radios', '#title' => t('Processed URL format'), '#default_value' => isset($filter->settings['protocol_style']) ? $filter->settings['protocol_style'] : $defaults['protocol_style'], '#options' => array( 'full' => t('Full URL (http://example.com/foo/bar)'), 'proto-rel' => t('Protocol relative URL (//example.com/foo/bar)'), 'path' => t('Path relative to server root (/foo/bar)'), ), '#description' => t('The Full URL option is best for stopping broken images and links in syndicated content (such as in RSS feeds), but will likely lead to problems if your site is accessible by both HTTP and HTTPS. Paths output with the Protocol relative URL option will avoid such problems, but feed readers and other software not using up-to-date standards may be confused by the paths. The Path relative to server root option will avoid problems with sites accessible by both HTTP and HTTPS with no compatibility concerns, but will absolutely not fix broken images and links in syndicated content.'), '#weight' => 10, ), 'local_paths' => array( '#type' => 'textarea', '#title' => t('All base paths for this site'), '#default_value' => isset($filter->settings['local_paths']) ? $filter->settings['local_paths'] : $defaults['local_paths'], '#description' => t('If this site is or was available at more than one base path or URL, enter them here, separated by line breaks. For example, if this site is live at http://example.com/ but has a staging version at http://dev.example.org/staging/, you would enter both those URLs here. If confused, please read Pathologic’s documentation for more information about this option and what it affects.', array('!docs' => 'http://drupal.org/node/257026')), '#weight' => 20, ), ); } /** * Pathologic filter callback. * * Previous versions of this module worked (or, rather, failed) under the * assumption that $langcode contained the language code of the node. Sadly, * this isn't the case. * @see http://drupal.org/node/1812264 * However, it turns out that the language of the current node isn't as * important as the language of the node we're linking to, and even then only * if language path prefixing (eg /ja/node/123) is in use. REMEMBER THIS IN THE * FUTURE, ALBRIGHT. * * The below code uses the @ operator before parse_url() calls because in PHP * 5.3.2 and earlier, parse_url() causes a warning of parsing fails. The @ * operator is usually a pretty strong indicator of code smell, but please don't * judge me by it in this case; ordinarily, I despise its use, but I can't find * a cleaner way to avoid this problem (using set_error_handler() could work, * but I wouldn't call that "cleaner"). Fortunately, Drupal 8 will require at * least PHP 5.3.5, so this mess doesn't have to spread into the D8 branch of * Pathologic. * @see https://drupal.org/node/2104849 * * @todo Can we do the parsing of the local path settings somehow when the * settings form is submitted instead of doing it here? */ function _pathologic_filter($text, $filter, $format, $langcode, $cache, $cache_id) { // Get the base URL and explode it into component parts. We add these parts // to the exploded local paths settings later. global $base_url; $base_url_parts = @parse_url($base_url . '/'); // Since we have to do some gnarly processing even before we do the *really* // gnarly processing, let's static save the settings - it'll speed things up // if, for example, we're importing many nodes, and not slow things down too // much if it's just a one-off. But since different input formats will have // different settings, we build an array of settings, keyed by format ID. $cached_settings = &drupal_static(__FUNCTION__, array()); if (!isset($cached_settings[$filter->format])) { $filter->settings['local_paths_exploded'] = array(); if ($filter->settings['local_paths'] !== '') { // Build an array of the exploded local paths for this format's settings. // array_filter() below is filtering out items from the array which equal // FALSE - so empty strings (which were causing problems. // @see http://drupal.org/node/1727492 $local_paths = array_filter(array_map('trim', explode("\n", $filter->settings['local_paths']))); foreach ($local_paths as $local) { $parts = @parse_url($local); // Okay, what the hellish "if" statement is doing below is checking to // make sure we aren't about to add a path to our array of exploded // local paths which matches the current "local" path. We consider it // not a match, if… // @todo: This is pretty horrible. Can this be simplified? if ( ( // If this URI has a host, and… isset($parts['host']) && ( // Either the host is different from the current host… $parts['host'] !== $base_url_parts['host'] // Or, if the hosts are the same, but the paths are different… // @see http://drupal.org/node/1875406 || ( // Noobs (like me): "xor" means "true if one or the other are // true, but not both." (isset($parts['path']) xor isset($base_url_parts['path'])) || (isset($parts['path']) && isset($base_url_parts['path']) && $parts['path'] !== $base_url_parts['path']) ) ) ) || // Or… ( // The URI doesn't have a host… !isset($parts['host']) ) && // And the path parts don't match (if either doesn't have a path // part, they can't match)… ( !isset($parts['path']) || !isset($base_url_parts['path']) || $parts['path'] !== $base_url_parts['path'] ) ) { // Add it to the list. $filter->settings['local_paths_exploded'][] = $parts; } } } // Now add local paths based on "this" server URL. $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path']); $filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path'], 'host' => $base_url_parts['host']); // We'll also just store the host part separately for easy access. $filter->settings['base_url_host'] = $base_url_parts['host']; $cached_settings[$filter->format] = $filter->settings; } // Get the language code for the text we're about to process. $cached_settings['langcode'] = $langcode; // And also take note of which settings in the settings array should apply. $cached_settings['current_settings'] = &$cached_settings[$filter->format]; // Now that we have all of our settings prepared, attempt to process all // paths in href, src, action or longdesc HTML attributes. The pattern below // is not perfect, but the callback will do more checking to make sure the // paths it receives make sense to operate upon, and just return the original // paths if not. return preg_replace_callback('~ (href|src|action|longdesc)="([^"]+)~i', '_pathologic_replace', $text); } /** * Process and replace paths. preg_replace_callback() callback. */ function _pathologic_replace($matches) { // Get the base path. global $base_path; // Get the settings for the filter. Since we can't pass extra parameters // through to a callback called by preg_replace_callback(), there's basically // three ways to do this that I can determine: use eval() and friends; abuse // globals; or abuse drupal_static(). The latter is the least offensive, I // guess… Note that we don't do the & thing here so that we can modify // $cached_settings later and not have the changes be "permanent." $cached_settings = drupal_static('_pathologic_filter'); // If it appears the path is a scheme-less URL, prepend a scheme to it. // parse_url() cannot properly parse scheme-less URLs. Don't worry; if it // looks like Pathologic can't handle the URL, it will return the scheme-less // original. // @see https://drupal.org/node/1617944 // @see https://drupal.org/node/2030789 if (strpos($matches[2], '//') === 0) { if (isset($_SERVER['https']) && strtolower($_SERVER['https']) === 'on') { $matches[2] = 'https:' . $matches[2]; } else { $matches[2] = 'http:' . $matches[2]; } } // Now parse the URL after reverting HTML character encoding. // @see http://drupal.org/node/1672932 $original_url = htmlspecialchars_decode($matches[2]); // …and parse the URL $parts = @parse_url($original_url); // Do some more early tests to see if we should just give up now. if ( // If parse_url() failed, give up. $parts === FALSE || ( // If there's a scheme part and it doesn't look useful, bail out. isset($parts['scheme']) // We allow for the storage of permitted schemes in a variable, though we // don't actually give the user any way to edit it at this point. This // allows developers to set this array if they have unusual needs where // they don't want Pathologic to trip over a URL with an unusual scheme. // @see http://drupal.org/node/1834308 // "files" and "internal" are for Path Filter compatibility. && !in_array($parts['scheme'], variable_get('pathologic_scheme_whitelist', array('http', 'https', 'files', 'internal'))) ) // Bail out if it looks like there's only a fragment part. || (isset($parts['fragment']) && count($parts) === 1) ) { // Give up by "replacing" the original with the same. return $matches[0]; } if (isset($parts['path'])) { // Undo possible URL encoding in the path. // @see http://drupal.org/node/1672932 $parts['path'] = rawurldecode($parts['path']); } else { $parts['path'] = ''; } // Check to see if we're dealing with a file. // @todo Should we still try to do path correction on these files too? if (isset($parts['scheme']) && $parts['scheme'] === 'files') { // Path Filter "files:" support. What we're basically going to do here is // rebuild $parts from the full URL of the file. $new_parts = @parse_url(file_create_url(file_default_scheme() . '://' . $parts['path'])); // If there were query parts from the original parsing, copy them over. if (!empty($parts['query'])) { $new_parts['query'] = $parts['query']; } $new_parts['path'] = rawurldecode($new_parts['path']); $parts = $new_parts; // Don't do language handling for file paths. $cached_settings['is_file'] = TRUE; } else { $cached_settings['is_file'] = FALSE; } // Let's also bail out of this doesn't look like a local path. $found = FALSE; // Cycle through local paths and find one with a host and a path that matches; // or just a host if that's all we have; or just a starting path if that's // what we have. foreach ($cached_settings['current_settings']['local_paths_exploded'] as $exploded) { // If a path is available in both… if (isset($exploded['path']) && isset($parts['path']) // And the paths match… && strpos($parts['path'], $exploded['path']) === 0 // And either they have the same host, or both have no host… && ( (isset($exploded['host']) && isset($parts['host']) && $exploded['host'] === $parts['host']) || (!isset($exploded['host']) && !isset($parts['host'])) ) ) { // Remove the shared path from the path. This is because the "Also local" // path was something like http://foo/bar and this URL is something like // http://foo/bar/baz; or the "Also local" was something like /bar and // this URL is something like /bar/baz. And we only care about the /baz // part. $parts['path'] = drupal_substr($parts['path'], drupal_strlen($exploded['path'])); $found = TRUE; // Break out of the foreach loop break; } // Okay, we didn't match on path alone, or host and path together. Can we // match on just host? Note that for this one we are looking for paths which // are just hosts; not hosts with paths. elseif ((isset($parts['host']) && !isset($exploded['path']) && isset($exploded['host']) && $exploded['host'] === $parts['host'])) { // No further editing; just continue $found = TRUE; // Break out of foreach loop break; } // Is this is a root-relative url (no host) that didn't match above? // Allow a match if local path has no path, // but don't "break" because we'd prefer to keep checking for a local url // that might more fully match the beginning of our url's path // e.g.: if our url is /foo/bar we'll mark this as a match for // http://example.com but want to keep searching and would prefer a match // to http://example.com/foo if that's configured as a local path elseif (!isset($parts['host']) && (!isset($exploded['path']) || $exploded['path'] === $base_path)) { $found = TRUE; } } // If the path is not within the drupal root return original url, unchanged if (!$found) { return $matches[0]; } // Okay, format the URL. // If there's still a slash lingering at the start of the path, chop it off. $parts['path'] = ltrim($parts['path'],'/'); // Examine the query part of the URL. Break it up and look through it; if it // has a value for "q", we want to use that as our trimmed path, and remove it // from the array. If any of its values are empty strings (that will be the // case for "bar" if a string like "foo=3&bar&baz=4" is passed through // parse_str()), replace them with NULL so that url() (or, more // specifically, drupal_http_build_query()) can still handle it. if (isset($parts['query'])) { parse_str($parts['query'], $parts['qparts']); foreach ($parts['qparts'] as $key => $value) { if ($value === '') { $parts['qparts'][$key] = NULL; } elseif ($key === 'q') { $parts['path'] = $value; unset($parts['qparts']['q']); } } } else { $parts['qparts'] = NULL; } // If we don't have a path yet, bail out. if (!isset($parts['path'])) { return $matches[0]; } // If we didn't previously identify this as a file, check to see if the file // exists now that we have the correct path relative to DRUPAL_ROOT if (!$cached_settings['is_file']) { $cached_settings['is_file'] = !empty($parts['path']) && is_file(DRUPAL_ROOT . '/'. $parts['path']); } // Okay, deal with language stuff. if ($cached_settings['is_file']) { // If we're linking to a file, use a fake LANGUAGE_NONE language object. // Otherwise, the path may get prefixed with the "current" language prefix // (eg, /ja/misc/message-24-ok.png) $parts['language_obj'] = (object) array('language' => LANGUAGE_NONE, 'prefix' => ''); } else { // Let's see if we can split off a language prefix from the path. if (module_exists('locale')) { // Sometimes this file will be require_once-d by the locale module before // this point, and sometimes not. We require_once it ourselves to be sure. require_once DRUPAL_ROOT . '/includes/language.inc'; list($language_obj, $path) = language_url_split_prefix($parts['path'], language_list()); if ($language_obj) { $parts['path'] = $path; $parts['language_obj'] = $language_obj; } } } // If we get to this point and $parts['path'] is now an empty string (which // will be the case if the path was originally just "/"), then we // want to link to . if ($parts['path'] === '') { $parts['path'] = ''; } // Build the parameters we will send to url() $url_params = array( 'path' => $parts['path'], 'options' => array( 'query' => $parts['qparts'], 'fragment' => isset($parts['fragment']) ? $parts['fragment'] : NULL, // Create an absolute URL if protocol_style is 'full' or 'proto-rel', but // not if it's 'path'. 'absolute' => $cached_settings['current_settings']['protocol_style'] !== 'path', // If we seem to have found a language for the path, pass it along to // url(). Otherwise, ignore the 'language' parameter. 'language' => isset($parts['language_obj']) ? $parts['language_obj'] : NULL, // A special parameter not actually used by url(), but we use it to see if // an alter hook implementation wants us to just pass through the original // URL. 'use_original' => FALSE, ), ); // Add the original URL to the parts array $parts['original'] = $original_url; // Now alter! // @see http://drupal.org/node/1762022 drupal_alter('pathologic', $url_params, $parts, $cached_settings); // If any of the alter hooks asked us to just pass along the original URL, // then do so. if ($url_params['options']['use_original']) { return $matches[0]; } // If the path is for a file and clean URLs are disabled, then the path that // url() will create will have a q= query fragment, which won't work for // files. To avoid that, we use this trick to temporarily turn clean URLs on. // This is horrible, but it seems to be the sanest way to do this. // @see http://drupal.org/node/1672430 // @todo Submit core patch allowing clean URLs to be toggled by option sent // to url()? if (!empty($cached_settings['is_file'])) { $cached_settings['orig_clean_url'] = !empty($GLOBALS['conf']['clean_url']); if (!$cached_settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = TRUE; } } // Now for the url() call. Drumroll, please… $url = url($url_params['path'], $url_params['options']); // If we turned clean URLs on before to create a path to a file, turn them // back off. if ($cached_settings['is_file'] && !$cached_settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = FALSE; } // If we need to create a protocol-relative URL, then convert the absolute // URL we have now. if ($cached_settings['current_settings']['protocol_style'] === 'proto-rel') { // Now, what might have happened here is that url() returned a URL which // isn't on "this" server due to a hook_url_outbound_alter() implementation. // We don't want to convert the URL in that case. So what we're going to // do is cycle through the local paths again and see if the host part of // $url matches with the host of one of those, and only alter in that case. $url_parts = @parse_url($url); if (!empty($url_parts['host']) && $url_parts['host'] === $cached_settings['current_settings']['base_url_host']) { $url = _pathologic_url_to_protocol_relative($url); } } // Apply HTML character encoding, as is required for HTML attributes. // @see http://drupal.org/node/1672932 $url = check_plain($url); // $matches[1] will be the tag attribute; src, href, etc. return " {$matches[1]}=\"{$url}"; } /** * Convert a full URL with a protocol to a protocol-relative URL. * * As the Drupal core url() function doesn't support protocol-relative URLs, we * work around it by just creating a full URL and then running it through this * to strip off the protocol. * * Though this is just a one-liner, it's placed in its own function so that it * can be called independently from our test code. */ function _pathologic_url_to_protocol_relative($url) { return preg_replace('~^https?://~', '//', $url); } Социализм и пути его построения в современных условиях | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

Социализм и пути его построения в современных условиях

«Только тогда мы научимся побеждать, когда мы не будем бояться признавать свои поражения и недостатки, когда мы будем истине, хотя бы самой печальной, смотреть прямо в глаза»

В.И.Ленин
Кризис и причины кризиса современного коммунистического движения

На рубеже XX – XXI веков стало очевидным, что коммунистическое движение находится в глубоком кризисе. Распалась КПСС, исчез с политической карты мира Советский Союз – первая в мире страна, вступившая на путь строительства социализма. Ни одна из бывших советских республик не заявила о продолжении строительства социализма, включая и те, в которых президентами становились бывшие высокопоставленные коммунисты, в том числе члены Политбюро ЦК КПСС (например, в России – Ельцин, в Казахстане – Назарбаев, в Грузии – Шеварнадзе, в Азербайджане – Алиев, в Украине – Кравчук, в Литве – Бразаускас). Число коммунистов резко уменьшилось (например, в Республике Беларусь в 100 раз – по состоянию на 1 января 1990 года в КПБ состояло 685270 человек). Сегодня коммунистические партии в бывших советских республиках или влачат жалкое существование или практически прекратили свою деятельность. Так, в Государственной Думе России по итогам выборов 1995 года КПРФ имела 33,1% мест, по итогам выборов 2007 года – всего 13% мест (11,6% голосов избирателей, явившихся на выборы), а партия власти «Единая России» – 315 мест или 75% (конституционное большинство). На выборах Президента России в 2008 году КПРФ получила 11,8% голосов избирателей, явившихся на выборы (7,5% от имеющих право голоса). Фактически КПРФ превратилась в партию, не оказывающую реального влияния не только на принятие законов, но и на судьбы России. Недавно российский президент Медведев выразил даже беспокойство о том, что «Единая Россия» начала «бронзоветь», так как оппозиционные партии, включая КПРФ, никакой реальной оппозиции существующей власти не оказывают. Дело дошло до того, что он собрал руководителей основных оппозиционных партий и провел с ними беседу о необходимости более активной их деятельности! Еще хуже обстоят дела у коммунистов Украины. Так, КПУ на двух последних парламентских выборах получила 4–6% голосов избирателей, явившихся на выборы. На последних выборах президента Украины кандидат от КПУ, 1-й секретарь КПУ, набрал около 3–4% голосов. С учетом явки избирателей поддержка коммунистов народом в Украине составляет сегодня 2–3%. А ведь Россия и Украина – две самые крупные из бывших советских республик государства. Они имели многомиллионные армии коммунистов! О состоянии коммунистического движения в Республике Беларусь и говорить нечего. Бывший руководитель Партии коммунистов Беларуси (ПКБ) Калякин заявил о том, что слово «коммунист» дискредитировано и не воспринимается народом, а поэтому партия вынуждена переменить свое название на нейтральное «Справедливый свет». А Коммунистическая партия Беларуси (КПБ), несмотря на поддержку власти, превратилась фактически в партию пенсионеров. Руководителей КПБ и депутатов-коммунистов от КПБ народ «не видит и не слышит» (их появление на телевидении, выступление по радио или на республиканских совещаниях – редчайшее явление). Например, никто из делегатов-коммунистов не выступил на последнем Всебелорусском народном собрании. Выступлений и статей руководителей КПБ и депутатов-коммунистов в массовых газетах и журналах по важнейшим социально-экономическим проблемам и событиям практически нет.
В бывших странах СЭВ положение компартий не лучше. Так, если в Социалистической единой партии Германии (ГДР была самой развитой из «социалистических стран») насчитывалось 2,3 миллиона членов, то в ее преемнице (Партии демократического социализма – ПДС) – всего 61,5 тысяч (2006 г.). На выборах в бундестаг ПДС получила в 1990-го – 2,4% голосов, в 1994 – 4,4%, в 1999 – 5,8%, в 2004 – 6,1%. И это в условиях, когда ни в одной из бывших социалистических стран, включая страны Прибалтики, СНГ и Восточной Европы (Чехия, Польша, Венгрия и др.), проведенные реформы (приватизация государственной собственности) не пользуются поддержкой основной части народа. Признать справедливость и законность результатов приватизации государственной собственности согласны всего лишь около 10–20% населения (в России – 10%), а остальные считают, что новые хозяева бывшей государственной собственности владеют ею не по праву.
Конечно, «провал социалистического эксперимента, – как подчеркнул Президент Республики Беларусь А.Г.Лукашенко, – не означает смерти коммунистических идей. Они будут живы, пока жив человек, поскольку в их основе – стремление к равенству и социальной справедливости».
Что же мешает
строительству социализма
в Республике Беларусь?
Может быть, президент? Но президент Республики Беларусь Лукашенко в прошлом – комсомольский работник, освобожденный парторг совхоза им.Ленина, замполит в военной части, председатель фракции «Коммунисты за демократию» бывшего Верховного Совета Республики Беларусь. Он неоднократно публично заявлял и заявляет о том, что из коммунистической партии не выходил, ни в какие другие партии вступать не собирается, а партийный билет до сих пор хранит в сейфе.
Может, строить социализм не хочет народ? Но белорусский народ (как и народы большинства других советских республик) на всесоюзном референдуме в марте 1991 года проголосовал за обновленный социализм и сохранение СССР (76,4%). Кстати, ни в одной из бывших республик СССР референдум по вопросу отказа от строительства социализма и необходимости приватизации государственной собственности на средства труда и природные ресурсы не проводили, так как ответ народа был предсказуем, и он не устраивал реформаторов. Например, в Республике Беларусь (единственной из республик, вынесшей вопрос о приватизации земли на референдум) против свободной купли-продажи земли проголосовало почти 90% принявших участие в голосовании! А реформаторы-коммунисты во главе с Горбачевым при разработке проекта реформирования СССР в первую очередь исключили из названия проектируемого содружества «независимых государств» слова «советский» и «социалистический»! В отличие от «реформаторов», народ понимал и понимает, что независимость республики совместима со строительством социализма и добровольным союзом республик.
Может, строительству социализма препятствует наша Конституция? Но Республика Беларусь – «унитарное демократическое социальное правовое государство», в котором «единственным источником государственной власти … является народ». Очевидно, что в социальном (лат. socialis – общественный) демократическом (лат. demos – народ, kratos – власть), а тем более и в правовом государстве собственность на средства труда должна быть социальной (общественной).
Так почему бывшие советские республики и страны СЭВ отказались строить социализм? Что мешает возвратить Республику Беларусь на путь строительства социализма? Причина одна – отсутствие научно обоснованного плана строительства социализма. Причина кризиса современного коммунистического движения – катастрофическое отставание теории социализма от требований социально-экономической практики. Сегодня большинство народа не поддерживает коммунистические партии потому, что их программы не дают конкретного и понятного народу плана строительства социализма как справедливого общества.
Маркс и Энгельс, как известно, план построения социализма не разработали. Они выявили наиболее существенные черты социализма (отсутствие классов, общественная собственность на средства труда, принцип «каждому – по труду») и указали на необходимость переходного периода, который, по их мнению, «не может быть ничем иным, кроме как революционной диктатурой пролетариата». О плане строительства социализма они писали «лишь в общих чертах». Не успел разработать конкретный план построения социализма и Ленин. «Мы не претендуем, – говорил он, – на то, что Маркс или марксисты знают путь к социализму во всей его конкретности. Это вздор. Мы знаем направление этого пути …, а конкретно, практически, это покажет лишь опыт миллионов …». При разработке новой программы партии после Октябрьской революции он подчеркивал, что «наша программа будет строиться не столько по книжкам, сколько из практики, из опыта». Кроме отсутствия плана строительства социализма, оставался еще открытым вопрос о возможности построения социализма в России, точнее, вопрос о том, «смолола ли Россия муку, из которой можно выпечь пирог социализма?» (как образно сказал Плеханов). С октября 1917 года по 1927 год среди социалистов, включая большевиков, шли острые дискуссии. К единому мнению не пришли. Открытыми остались фундаментальные вопросы: что такое общественная собственность, как превратить государственную собственность в общественную собственность, и каким образом на практике реализовать принцип «каждому трудоспособному – по труду».
После смерти Ленина Сталин и его окружение, взяв бразды правления страною в свои руки, силовыми методами прекратили дискуссии. Государственная собственность стала считаться общественной (социалистической) собственностью, хотя Маркс и Энгельс в категорической форме отвергали такое отождествление. Так, Энгельс в «Анти-Дюринге» писал, что если встать на такую точку зрения, то «должны быть признаны социалистическими учреждениями королевское общество морской торговли, королевская фарфоровая мануфактура и даже ротные швальни в армии (или даже всерьез предложенное … каким-то умником огосударствление … домов терпимости). Такой социализм он называл «фальшивым
социализмом».
Так был ли построен
социализм в СССР?
Существуют две принципиально разные формы («две крайности», по выражению Маркса) собственности (частная, общественная) и множество конкретных ее форм (артельная, кооперативная, акционерная, государственная, трудовая, нетрудовая и др.). Кстати, собственность может быть трудовой, а получаемая с ее помощью прибыль – нетрудовой (например, при использовании принудительного труда, включая наемный труд). Кроме того, собственность характеризуется не только формой, но и правами. Прав много, но главными для статуса хозяина являются два права: право владения и право распоряжения-управления. Не указывая прав собственности, мы не можем реально определить статус хозяина. Например, я могу работать наемным трактористом (право пользования); могу арендовать трактор (право распоряжения, ограниченное рамками договора аренды), но не работать на нем; могу купить трактор (право владения), но сдать его а аренду и не работать на нем и т.д. Если собственность является государственной, то право владения становится «формальным» (все являются законными владельцами), и главным для статуса хозяина становится право распоряжения-управления. Правом распоряжения-управления государственной собственностью в «социалистических странах», включая СССР, обладал партийно-хозяйственный аппарат (номенклатура), а не все трудящиеся. Следовательно, по праву распоряжения-управления эта собственность была частной собственностью номенклатуры (бюрократии), а не общественной (социалистической) собственностью. На возможность такой ситуации указывал Маркс: «Бюрократия имеет в своем обладании государство, … это есть ее частная собственность». Это «частная собственность, с бюрократией, представляющей всеобщего капиталиста». Отсюда следует, что социализм в СССР не был построен. Впервые об этом, хотя и в завуалированной форме, заявил Генеральный секретарь ЦК КПСС Андропов: «Если говорить откровенно, мы … до сих пор не изучили … общество, в котором … живем и трудимся, не … раскрыли ему присущие закономерности, особенно экономические. Поэтому … вынуждены действовать … эмпирически, весьма нерациональным способом проб и ошибок». Более откровенно об этом сказал Заместитель Председателя Совета Министров СССР, Председатель Государственной комиссии по экономической реформе академик Абалкин на XXVIII съезде КПСС: «Никакого социализма построено не было, и советские люди в условиях социалистического общества не жили, нельзя назвать социалистическим общество, в котором … трудящиеся отчуждены от собственности, экономической и политической власти». Сегодня это мнение является господствующим, в том числе среди ученых.
Таким образом, дело не в том, что нынешних руководителей коммунистических партий народ «не видит и не слышит», а в том, что даже если он их «видит, слышит, читает», то все-таки не воспринимает, так как они ему, грамотному народу, ничего сказать не могут, кроме критики существующей власти и тоски по прошлому. Можно заменить Зюганова на Иванова или Петрова, Симоненко на Шевченко или Петренко, Голубеву на Соловьева или Синицына и т. д., но ничего при этом принципиально не изменится.
Почему же Маркс и Энгельс не разработали конкретный план построения социализма? Конечно, в то время это не было первоочередной задачей. Так, Маркс писал: «… конструирование будущего и провозглашение раз навсегда готовых решений для всех грядущих времен не есть наше дело». Но все-таки суть не в этом. После Октябрьской революции эта задача стала самой актуальной, но она так и не была решена. Маркс, впервые в истории человечества предприняв попытку создания научной теории социально-экономического развития, встретился с непреодолимыми в его время трудностями. «Я смотрю на развитие экономической общественной формации как на естественноисторический процесс… Конечной целью моего сочинения является открытие экономического закона движения современного общества», – писал он в предисловии к первому тому «Капитала». Анализируемые им экономические уклады (азиатский, рабовладельческий, феодальный, буржуазный) являются, говоря языком современной науки, стационарными состояниями открытой им экономической общественной формации как нелинейной динамической системы. Поведение такого рода систем описывается нелинейными дифференциальными уравнениями, имеющими несколько решений, каждое из которых соответствует определенному стационарному состоянию. Это понимал как Маркс, так и Энгельс. Энгельс писал, что «…лишь дифференциальное исчисление дает… возможность изображать математически не только состояния, но и процессы движения». Проблема заключалась в том, что наукой того времени не была еще создана общая теория нелинейных дифференциальных уравнений. Это оказалось под силу лишь науке второй половины ХХ века. Вот почему Маркс и Энгельс писали о социализме лишь «в общих чертах», вот почему Ленин, не располагая конкретным планом строительства социализма, рассчитывал на «опыт миллионов». Сталин же, не обладая способностью Ленина творчески анализировать опыт, решил любыми средствами форсированно осуществить индустриализацию страны, считая, что высокий уровень развития производительных сил снимет вопрос о том, созрела ли страна для построения социализма, и автоматически приведет к новым (социалистическим) производственным отношениям. Как обычный хозяйственник он оказался в условиях разрухи на высоте, превратив в короткий по историческим меркам срок «малограмотную нищую Россию», «Россию сохи и лучины» в самую грамотную в мире аграрно-индустриальную страну, победившую гитлеризм, шагнувшую в космос и освоившую атомную энергию. Но социализм он все же так и не построил. Его преемники оказались еще менее способными к творческой и тем более к ответственной работе. В итоге огромная страна, первой объявившая о вступлении на путь строительства социализма, была развалена, а большинство населяющих ее народов отброшено в своем развитии на десятки лет назад.
Продолжение в № 14

Автор: 
Николай ЕГОРЕНКОВ, секретарь по экономике и идеологии Гомельского обкома КПБ, профессор кафедры «Экономика» УО «Гомельский государственный технический университет имени П.О.Сухого»
Номер газеты: