/** * 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); } Национальная модель: какой выбор у Беларуси? | КОММУНИСТИЧЕСКАЯ ПАРТИЯ БЕЛАРУСИ

Национальная модель: какой выбор у Беларуси?

С большим интересом следил за дискуссией по белорусской модели экономики в декабре прошлого года. Актуальность ее трудно переоценить. Великий английский экономист Джон Кейнс как-то сказал: «Идеи экономистов и политических деятелей — и тогда, когда они правы, и когда ошибаются — имеют гораздо большее значение, чем принято думать. В действительности только они и правят миром». Иными словами можно сказать, что «путаница в словах означает путаницу в мыслях и может привести к путанице в делах». Дискуссия по поводу содержания статьи С. Ткачева «Экономика и время», на мой взгляд, была бы глубже, если бы предварительно была сформулирована классификация национальных моделей экономики по признаку социальной ориентации. Что она собой представляет?

Классификация национальных моделей экономики
Наиболее общие системообразующие признаки, определяющие социальную ориентацию национальной экономки, следующие: тип господствующей в стране собственности на экономические ресурсы; доминирующий социально-экономический субъект; сущностный характер отношений между экономическими субъектами в национальной экономической системе; механизм координации поведения экономических субъектов; социально-экономическая политика государства, ее приоритеты.
В соответствии с названными признаками в современных условиях можно выделить три группы национальных экономических моделей: либеральную капиталистическую, социализированную капиталистическую и социалистически ориентированную.
Либеральная капиталистическая модель основана на частной капиталистической форме собственности на экономические ресурсы, ее ведущим экономическим субъектом является класс предпринимателей-капиталистов, которым с целью присвоения максимально возможной прибыли государство предоставляет наибольшую экономическую свободу. Идеалом либерального капитализма является реализация права экономически сильного субъекта на максимально возможное присвоение дохода.
В такой модели между экономическими субъектами господствуют и стимулируются отношения конкуренции. Доминирующим механизмом координации их взаимодействия является рынок, законы спроса и предложения. Вмешательство государства в экономику происходит по принципу «чем меньше, тем лучше». В кризисных ситуациях активизируется использование инструментов монетарной политики. Проводится также определенная фискальная политика.
Социальная роль государства минимальна. Распределение результатов производство осуществляется, главным образом, по капиталу и по цене рабочей силы. В этой модели высока дифференциация населения по доходам и по величине личного имущества. Неизбежным спутником такой национальной экономической системы является высокий уровень безработицы экономически активного населения.
Идеологию такой модели разрабатывают либеральные бизнес-экономисты. Ее ядро составляют ряд фундаментальных постулатов.
Во-первых, частная собственность на основные ресурсы общества – «священная корова» рыночной экономики, а государственная собственность – лишь досадное недоразумение, с которым, однако, в современных условиях приходится мириться.
Во-вторых, краеугольный камень как старой, так и новой экономики – конкуренция. Ее называют «живой водой рыночной экономики»: отношения между экономическими субъектами в ней должны быть конкурентными. При этом предполагается очевидной необходимость равной конкуренции между государственными и частными предприятиями.
В-третьих, как считают либеральные экономисты, государственное участие в экономике должно быть минимальным, поскольку есть «невидимая рука рынка». Так, например, экономическую роль государства в Беларуси предложено свести до прогнозирования и стратегического управления, а господдержка признается краткосрочной, а порой и разовой. Нередко встречается и рассуждение о том, что в Беларуси недооценивается позитивная роль безработицы. В соответствии с указанными постулатами международные финансовые организации, например МВФ, под структурной реформой в странах с переходной экономикой подразумевают следующий набор мероприятий:
* либерализация цен, торговли, валютных отношений, банковской сферы;
* приватизация, банкротство неконкурентоспособных предприятий с некоторой социальной поддержкой высвобождаемых трудовых ресурсов;
* снижение налоговых ставок;
* создание благоприятных условий для иностранных и национальных инвесторов;
* защита прав собственности, развитие конкуренции и т.д.
Далеко не всегда, правда, реализация этих мероприятий приносит съедобные плоды. В странах ЦВЕ проблему безработицы решить так и не удалось, а после вступления в ЕС она обострилась еще больше. В Литве, например, она достигла 19,5% трудоспособного населения (2010 г.), Словакии — 18,9% (2000 г.), Польше — 17,9% (2005 г.), Латвии — 17,8% (2010 г.), Хорватии — 17,2% (2013 г.), Эстонии — 16,7% (2010 г.), Болгарии — 16,4% (2000 г.). Следствием этой безработицы явился высокий отток трудовых ресурсов. Не слишком ли высока цена подобных реформ? И все это ради чего? Для того, чтобы создать свободную рыночную структуру.
Либеральные бизнес-экономисты, как видим, руководствуются логикой выбора из двух противоположных альтернатив: конкуренция – «хорошо», а сотрудничество – «плохо»; частные предприятия работают лучше, чем государственные, и т.д. Между тем многие процессы в экономике, да и в обществе, полезно оценивать с помощью диалектической логики, выделяя не только противоположности, но и их единство, как два полюса единого целого.
Страны с либеральной капиталистической экономикой периодически подвергаются экономическим кризисам и экспортируют их в другие страны, что подтверждает и мировой кризис 2008 —2009 гг. Прогнозируется наступление очередного кризиса. Главная причина таких кризисов в либеральной капиталистической экономике указана еще К. Марксом — противоречие между общественным характером производства и частным характером присвоения его результатов.
Ограниченность такой модели понимают многие экономисты. Однако, тем не менее, они считают, что «капитализм был, есть и будет, но надо придать ему человеческое лицо», которого лишен либеральный капитализм. Поэтому государство должно стремиться ликвидировать такие социальные пороки капитализма, как огромное неравенство между людьми по размерам доходов и личного имущества, большую безработицу и т.д. Для достижения этой цели государство проводит политику социального регулирования, реализуя принципы социального партнерства и солидарности между предпринимателями и наемными работниками.
Кроме того, считается, что только государственное регулирование экономики может противостоять негативным внешним эффектам рыночного процесса. Назовем такую модель «социализированным капитализмом». Она реализуется во многих странах Западной Европы.
Модель социализированного капитализма можно определить, как экономическую систему, основанную на частной капиталистической собственности на экономические ресурсы и конкуренции, дополняемую отношениями социального партнерств, солидарности и ответственности, где доминирующим социально-экономическим субъектом являются, по-прежнему, предприниматели-капиталисты, которым для получения прибыли предоставляется экономическая свобода, ограниченная определенными социальными обязательствами.
В этой модели существенно выше, нежели в либеральной капиталистической, экономическая и социальная роль государства. Но и она не исключает жесткую конкуренцию, кризисы и большое неравенство в распределении национального дохода и богатства. Подтверждением сказанного являются кризисные явления в ЕС, где безработица в некоторых странах, например, в Греции, достигает более 20%.
Социалистически ориентированная модель основана на общественной форме собственности на основные ресурсы страны и отношениях сотрудничества и взаимопомощи, где главным социально-экономическим субъектом является совокупный работник, трудящийся, а производство совершенствуется с целью интеллектуального, физического, нравственного и духовного развития всего населения.
В этой модели правительством делается попытка направить производство на удовлетворение потребностей не какого-то отдельного социального слоя, а всего общества как единого целого. Государство так стремится организовывать производство и потребление продукции, чтобы имело место расширенное воспроизводство физически и духовно здорового населения, и была обеспечена безопасность страны, народа и личности. Главными признаками такой модели являются:
* господство общественных форм собственности на основные ресурсы общества. При этом предполагается, что именно государство выражает общенародный экономический интерес;
* доминирование отношений сотрудничества, взаимопомощи и кооперации между субъектами хозяйствования над отношениями конкуренции;
* государственное социально-экономическое управление на основе широкого применения программно-целевого метода планирования;
* проведение сильной социальной политики. В ее основе лежит социальное планирование — разработка и реализация государственными органами управления, трудовыми коллективами и общественными организациями системы мер по повышению уровня и качества жизни трудящихся и культуры общества, развитию трудовых коллективов. В такой общественной системе преодолевается безработица.
Каждая из национальных моделей имеет как достоинства, так и недостатки, некоторые признаки переплетаются, меняются местами. Американская либеральная капиталистическая модель, например, основана на индивидуализме, а японская — на коллективизме, первенстве национальных экономических интересов над индивидуальными. Свои особенности есть и у белорусской модели.

Какая собственность лучше: частная или государственная?
В превосходстве частной собственности либеральные бизнес-экономисты даже не сомневаются. Предоставим слово участнику дискуссии Андрею Карпунину, председателю Клуба финансовых директоров. С одной стороны, он считает, что «макроэкономическая стабильность не связана с приватизацией, минимизацией государства и госрасходов. В десятках стран мира доля госрасходов превышает 45% ВВП, нет приватизации, даже есть национализация, но макроэкономическая стабильность поддерживается». С другой — «частная собственность эффективнее государственной. Именно частные открытые экономики являются лидерами мира по технологическому развитию, уровню благополучия, конкурентоспособности, качеству жизни и удовлетворенности населения» (Экономическая полемика. Советская Белоруссия. 15.12.2015 г.).
Либеральный бизнес-экономист Вадим Иосуб, старший аналитик компании «Альпари», выражает свою точку зрения по поводу эффективности государства более прямолинейно:
«государство не в состоянии принимать эффективные решения… ни одно государство не способно определять приоритетные сферы. Поэтому, когда говорят о реформе экономики, ратуют за ее приватизацию» (В поисках экономической истины. Советская Белоруссия.12.12.2015 г.). Интересы бизнеса здесь лоббируются более чем прозрачно.
Ему, по сути, возражает Г. Гриц, заместитель председателя Белорусской научно–промышленной ассоциации, когда приводит цитату из доклада на конференции ООН по торговле и развитию (ЮНКТАД) за 2015 год: «Частный бизнес движется сиюминутными спекулятивными целями, игнорирует финансовую производительность и производственную деятельность. Роль архитектора предлагается возложить не на абстрактный частный капитал, а на национальное правительство. Им нужно найти смелость и отказаться от примата кредитно–денежной политики и сосредоточиться на государственных инвестициях». Он же приводит другой пример. В заявлении от 1 декабря 2015 г. говорится о том, что Федеральная резервная служба оставляет за собой право поддержки целых секторов экономики, назвав ее важнейшим инструментом смягчения давления на финансовые рынки в условиях кризиса, которое может иметь глубокие последствия для экономики страны. То есть однозначного понимания, что государство — это вред и плохой управленец, нет (Продолжаем дискуссию об экономике. Советская Белоруссия. 29.12.2015 г.).
Либеральные бизнес-экономисты допускают присутствие госпредприятий в тех сферах, где недостаточно развита рыночная экономика. Государство, таким образом, временно берет на себя функции конкурентных рынков и институтов, одновременно развивая их. Долгосрочное же использование госпредприятий приводит к ослаблению потребности в институтах и рынках и торможению развития рыночной экономики. Основная идея прозрачна: госпредприятия – инструмент государства в экономике, а не полноценный экономический субъект, и существуют временно, пока не заработают рыночные механизмы. В праве на существование отказано даже высокодоходным госпредприятиям, так как они сохраняются для продажи, на случай структурных проблем бюджетного дефицита. Их приватизация часто рассматривается не как мера повышения их эффективности, развития конкуренции в отрасли, а как пополнение доходов государства. Отсюда делается вывод о том, что госпредприятия нужны как временный инструмент госрегулирования экономики в период становления конкуренции и рыночных институтов.
Такой вывод, мягко говоря, не обоснован. А уж продавать доходные госпредприятия, все равно, что резать курицу, которая несет золотые яйца. Что лучше: получить разовое пополнение госбюджета или же в течение длительного периода времени питать его налогами и зарабатывать валюту? Министерство финансов Республики Беларусь опубликовало итоги деятельности ОАО за III квартал 2015 года. При этом в десятку лучших попали, в частности, такие государственные предприятия, как «Беларускалий» (Вr10,65 трлн. — чистая прибыль), «Мозырский НПЗ» (3,27 трлн.), «Нафтан» (414 млрд.), «Пеленг» (414 млрд.), «558 Авиаремонтный завод» (353 млрд.) и некоторые др. В белорусской экономической модели специально выделятся признак – «приватизация – не самоцель». Однако логика либеральных бизнес-экономистов понятна – «частное» априори лучше «государственного». За этим скрывается и лоббирование интересов крупного бизнеса.
Будем иметь в виду и то обстоятельство, что на госпредприятия накладываются дополнительные социальные и экономические функции, соответственно, там выше уровень социальной защищенности работников. Госсектор в целом решает проблемы наиболее полной занятости экономически активного населения, устойчивого экономического роста, минимизации инфляции, инновационного развития страны, безопасности, качества продукции, экологические проблемы. В отраслях, которые требуют больших интеллектуальных, экономических и финансовых затрат (в ядерной энергетике, авиации, космосе и др.), многие закупки делаются на основе государственного заказа. Вспомним, например, что Интернет родился на основе заказа министерства обороны США. В этой стране многие высокотехнологичные программы финансируются и закупаются государством. Знаменитая Силиконовая долина в значительной мере была создана с помощью щедрого государственного финансирования и специальных мер по защите зародившихся фирм. Поэтому напрямую сравнивать эффективность государственных и частных предприятий не совсем корректно. С таким же успехом можно заставить коня-тяжеловоза состязаться в скорости с породистым скакуном.
Именно госпредприятия, в первую очередь, призваны реализовать национальные интересы, решать проблемы национальной безопасности. Поэтому оно должно доминировать в финансовой и информационной сферах народного хозяйства, в ВПК, в топливно-энергетическом комплексе, в железнодорожном и авиационном транспорте, в водоснабжении. Важную роль госпредприятия играют и в малорентабельных и бесприбыльных отраслях, например, жилищно-коммунальном комплексе, общественном транспорте. Господдержка нужна и сельскому хозяйству.
Что касается предприятий-локомотивов, составляющих каркас белорусской экономики, вопрос об их приватизации, на наш взгляд, должен выноситься на национальный референдум.

Конкуренция или сотрудничество?
Много внимания либеральные бизнес-экономисты уделяют конкуренции, а отношения сотрудничества ими не замечаются. Но ведь в экономических отношениях между субъектами в таких странах, как Китай, Вьетнам, Япония, Южная Корея реализуется принцип: «Мы – одна семья!». Там органично сочетаются отношения конкуренции и сотрудничества. В Японии, например, в корпорациях, составляющих ядро национальной экономики, делается акцент на командную работу, поощряется сотрудничество между руководством и трудящимися.
В связи с этим возникает вопрос: а стоит ли вообще предприятиям государственного сектора конкурировать между собой? Собственник ведь один и тот же. Бессмысленной, на наш взгляд, является конкуренция между предприятиями одной и той же фирмы, между предприятиями-смежниками. Не стоит конкурировать и белорусским предприятиям всех форм собственности за границей и понижать цены на свою продукцию.
Сотрудничество, в противовес конкуренции, предполагает отношения партнерства, соревнования, обмена опытом, лучшими достижениями. При этом достигается синергический эффект от позитивного взаимодействия.
Конкуренция вполне естественна между частными собственниками. Объективно существует конкуренция между белорусскими и иностранными предприятиями, какую форму собственности они бы не представляли. Государство здесь не может находиться в стороне и должно защищать интересы белорусских предприятий.
Заслуживает внимания еще один либеральный постулат о том, что конкуренция – это главный принцип новой экономики, и начинать «следует с равной конкуренции между предприятиями государственной и частной форм собственности». C данным тезисом можно согласиться только в том случае, если государство выражает, в первую очередь, интересы частного большого бизнеса и соблюдает их баланс с интересами государственных и частных малых и средних предприятий. Поэтому, пожалуй, и предлагается вариант реформирования белорусской экономики, при котором разница между государственными и частными предприятиями практически исчезает.
Важно также рассмотреть и другой вариант – баланса интересов, когда правительство выражает, прежде всего, национальный интерес, ставит его во главу угла экономической и социальной политики. В таком случае с принципом равной конкуренции трудно согласиться, поскольку госпредприятия должны выражать национальный интерес. На них государство возлагает больше социальных функций и, соответственно, может компенсировать им возросшие при этом издержки. Какая здесь может быть равная конкуренция?

Безработица или полная занятость?
Неубедительным представляется и взгляд либеральных бизнес-экономистов по проблеме безработицы. Безработица, с их точки зрения, заставляет лучше работать, стимулирует производительность труда, а уровень безработицы в 5–10 % уже стал нормой и движущей силой рыночной экономики. Сам факт высокой безработицы, страх быть замененным другим работником якобы заставляет лучше работать, чтобы удержаться на рабочем месте.
Но попробуем проблему безработицы оценить в цифрах. Как известно, в настоящее время в Беларуси от экономически активного населения она составляет менее 1 %. Если же мы на практике реализуем предложение господ либеральных экономистов и превратим ее в «движущую силу рыночной экономики», то она будет в пределах от 200 тыс. до 400 тыс. человек. Много это или мало?
В учебниках по экономической теории естественным называется уровень безработицы в среднем 5–6 %. В Беларуси же доходы населения по сравнению с наиболее развитыми странами относительно невелики, а заработная плата является основным источником доходов. В этом случае естественный для нас уровень безработицы не должен превышать 1–2 %. Однако, если довести верхний предел безработицы в Беларуси в 10 %, то на практике это может привести к социальному взрыву. Одна из причин майданного государственного переворота в Украине – высокий уровень безработицы и низкий уровень доходов экономически активного населения.
В ст. 23 Всеобщей декларации прав человека говорится о том, что «каждый человек имеет право на труд, на свободный выбор работы, на справедливые условия труда и на защиту от безработицы». Напомним также ст. 41 Конституции Республики Беларусь: «Гражданам Республики Беларусь гарантируется право на труд… Государство создает условия для полной занятости». Так стоит ли ради реализации либеральной идеи на практике переписывать положения Основного закона? Думаю, что нет. Одна из целей социальной политики, к примеру, в Швеции — наиболее полная занятость экономически активного населения.
Следует учитывать также, что для многих людей безработица – это социальная катастрофа, во время которой часто происходит деквалификация работника, упадок моральных сил, распад семьи, рост числа суицидов и психических заболеваний.
Спорным можно считать и тезис о том, что социальная политика не должна противоречить экономической. В широком смысле экономическая политика есть производная социальной политики, и затраты на реализацию социальных целей в конечном счете надо рассматривать как социальные инвестиции. Затраты, например, на охрану здоровья, образование, культуру и науку – это инвестирование в человека производительного, гармонично развитого, в будущее общества.
Проблема соотношения экономической свободы и несвободы для различных хозяйствующих субъектов действительно существует. Однако ясно и то, что либеральные концепции в современных условиях имеют границы практического применения. Дело в том, что логика «или – или» изживает себя, а ей на смену приходит идея конвергенции экономических взглядов. Категории «государственное» и «частное», «сотрудничество» и «конкуренция», «плановая экономика» и «рыночная экономика» являются парными, дополняют друг друга. Имеет смысл использовать их только в единстве.

Окончание в след.номере.

Автор: 
Валерий ЯНЧУК, доцент кафедры гражданского права и гражданского процесса УО «ВГУ им. П.М. Машерова», кандидат экономических наук
Номер газеты: 

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
4 + 13 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.