LINUX.ORG.RU

Python или PHP как первый язык…

 ,


0

1

Прежде стоит сказать, что я никогда не был связан с программированием: в школе ничего не проходили и с ВУЗом тоже не повезло. Однако, сдаваться же никто не собирается!

Буквально несколько месяцев назад, спонтанно, ну как это обычно бывает, появилась прекрасная идея, — показалось наверно, — подумал я. А вот и нет. Когда случайно рассказал одному замечательному товарищу — тот поддержал как только мог, и, более того, дополнил — а дополнение стало беспрецедентным мотиватором, каких в жизни своей не встречал.

В бой.

Сейчас мы с ним активно ищем качественный материал для самостоятельного углубленного изучения. Во времени не ограничены никак. Да вообще никак и ничем, что касаемо интернет-материала: нужно заплатить — заплатим, есть что-нибудь толковое в паблике — с удовольствием изучим. А мы уверены, что много чего есть.

Недавно, максимально насколько это было возможно изучили разметку HTML 4.01 и CSS 2.1 согласно спецификациям «W3C» и, сейчас продолжаем HTML5/CSS3. Эта часть, безусловно, никаких трудностей не доставляет ни в теории ни в практике; чего там, собственно, трудного, всё легко и понятно. //Отдельное спасибо за курсы от «Специалиста» людям, которые не хоронят их у себя на компьютере.

Далее.

В выборе серверного языка мы не сошлись взглядами: я за изучение Python и, конечно же, последующее освоение Django; приятель на стороне PHP. Наши позиции не могут быть сколь угодно объективными по ряду обстоятельных причин, поэтому не разумно ограничить себя двумя мнениями.

Итак, о проекте.

Проект социальный. Множество взаимодействий с (дальше пока густой лес), социальный граф, логика как у существующих соц. сетей. Идея абсолютно другая: не третий фейсбук и не десятый контакт. Идея имеет самодостаточную роль в жизни, а потому не высосана из пальца, лишь бы что-нибудь сделать. Полагаю, что свеохнагрузки приходятся не на ЯП, а на БД. Полагаю, что правильная архитектура — залог успеха. И, полагаю, что можно обойтись языком, который всё же больше нравится. Но не исключаю, что есть более компетентные люди, которые развеют мои предположения.

Что изучать тем, кто только пришел в программирование: Python (Django) или PHP (скорее всего Yii)? Или?

Извиняюсь за то, что случайно попал не в нужный раздел — исправлюсь.



Последнее исправление: NiceForce (всего исправлений: 3)

вдвоем против всех. Это так мило

anonymous
()
Ответ на: комментарий от dizza

Erlang:

div_by_zero(A,B) ->
    case catch A/B of
        {'EXIT',_} -> true; %% на ноль
        _ -> false %%
    end.

PHP:

$x = 0;
// ...
if (!$x) throw new Exception('Division by zero');
$result = 1/$x;
PHP всегда выдаёт warning при делении на ноль. Если нужно, то можно отслеживать как дано выше.

Python:

def div_by_zero(a, b):
  try:
    a / b
  except ZeroDivisionError:
    return True
  else:
    return False

Ruby:

def div_by_zero(a, b)
  begin
    a / b
  rescue ZeroDivisionError
    true
  else
    false
  end
end

Haskell:

isInfinite (1/0)
=> True

maxRealFloat :: RealFloat a => a -> a
maxRealFloat x = encodeFloat b (e-1) `asTypeOf` x where
  b     = floatRadix x - 1
  (_,e) = floatRange x

Деление типа float на ноль просто возвращает бесконечность, что преобразуется в максимально возможное значение для типа RealFloat на данной платформе с помощью функции подобной maxRealFloat выше. Если используется оператор `div` для деления целых чисел на ноль, то exception «divide by zero».

tp_for_my_bunghole
()

Как обычно PHP обсирает кучка дураков которые не могут сформулировать ни одной своей претензии.

tp_for_my_bunghole
()

Обсиратели php очень нежны друг с другом, и мило друг друга подбадривают.

tp_for_my_bunghole
()
Ответ на: комментарий от tp_for_my_bunghole

И зачем ты все это написал? PHP явно слил, с чем тут спорить? Тут вариантов немного - exception(сигнал в случае сишки вполне нормален) или inf. Варнинг же выдается, значит ситуация нормальной не считается. Вопрос в том, почему всего-лишь варнинг? Почему не exception? Почему разрешается продолжать вычисления с заведомо неверным результатом(false с преобразованием к 0)?

forCe
()
Ответ на: комментарий от forCe

Вопрос в том, почему всего-лишь варнинг? Почему не exception? Почему разрешается продолжать вычисления с заведомо неверным результатом(false с преобразованием к 0)?

Ну словил ты exception, и что? Ты знаешь что дальше делать с программой? A exception подавлен где-то глубоко?

def func_somewhere_in_the_deep(a, b):
  try:
    result = a / b
  except ZeroDivisionError:
    # division by zero, I don't care
    result = 0
  else:
    # no division by zero occurred, let's multiply
    result = result * 2
    # I luv pyton! I'm a programmer and PHP sucks!

  return result

Code that does not rethrow exceptions is very common. We are consenting adults(python motto). Aren't we all?

Можно было бы подумать что однострочная lambda в python это результат каких-то мудрых мыслей, но это просто демонстрация для школьников.

Отсутствие приватных методов/переменных класса в python, значит ли это что python сливает по сравнению с php?

Type Hinting?

// object/array/callable type hints
// catchable error if not satisfied
public function test(SomeClass $p) {
    echo $p->var;
}

function func(callable $c) { return $c(); }
function callback_func(){ return 'Hello'; }

class StaticTest{ static function stat(){return 'something';} }
class InstanceTest{ function inst(){return 'something';} }

$result = func(function(){ return 'something'; });
$result = func(['StaticTest', 'stat']);
$result = func([(new InstanceTest), 'inst']);

tp_for_my_bunghole
()
Ответ на: комментарий от Deleted

специально для некрофилов: питон сейчас чуть ли не в каждом десктопном дистрибутиве в базовой комплектации, в дебиане/красношляпе точно.

КАКОЙ питон сейчас? Третий или второй? Или по твоему разницы нет?

drBatty ★★
()
Ответ на: комментарий от anonymous

Так ты и пхп не знаешь? Это не ошибка.

это ты не знаешь. Это ОШИБКА. Причём это не баг, а ХОРОШО ДОКУМЕНТИРОВАННАЯ фича. False возвращается в случае недопустимой операции, например попробуй узнать позицию буквы Ё в слове ЖОПА. Нет там такой буквы, и strpos() вернёт FALSE. Потому-что найти букву нельзя, как и делить на ноль. Тоже самое произойдёт также вслучае открытия файла которого нет, записи в файл открытый RO, открытия БД которую невозможно открыть, и т.д. Это правило, а не исключение.

Результатом деления на ноль является false, которое, как ты понимаешь, легко скастуется к нулю..

это проблема быдлокодеров, которые находят букву Ё в слове ЖОПА, в позиции 0.

с inf'ом

возвращайся в начальную школу, двоечник. ДЕЛИТЬ НА НОЛЬ НЕЛЬЗЯ. А бесконечность — совсем другая сущность, и не имеет отношения к делению на ноль. Бесконечность — предел деления на бесконечно малое. Она знак имеет. А вот ноль != бесконечно малому, знака не имеет, и предела у функции 1/x НЕТ. Там разрыв с двумя РАЗНЫМИ односторонними пределами. В самой точке ноль значение 1/x НЕ определено.

или даже с сигфолтом в сишечке.

facepalm

Сишечка как раз легко делит на ноль, просто не заморачиваясь этой фигнёй. Компилятор создаёт код, который пытается выполнить деление. Его «результат» зависит в первую очередь от архитектуры CPU. Вот например:

$ gcc -Wall dbz.c 
$ ./a.out 
1.000000 / 0.000000 == inf
$ cat dbz.c
#include <stdio.h>

int main(int argc, char *argv[])
{
	double x = 1.0;
	double y = argc - 1.0;
	printf("%f / %f == %f\n", x, y , x/y);
	return 0;
}
как видишь, сишечка с лёгкостью делит на ноль, и результат зависит от настроек FPU SSE2. ИЧСХ неправильно, ибо inf это бесконечность, а должно быть NaN.

PHP явно отличился. И не в лучшую сторону. Идите быдлокодить дальше.

PHP действует строго в соответствии с документацией, выдаёт FALSE в ответ на недопустимую операцию. Только быдлокодеры не проверяют коды ошибок, и находят в результате Ё в ЖОПА. Ну и на ноль тоже делят.

drBatty ★★
()
Ответ на: комментарий от tp_for_my_bunghole

Где-то прочитали что «делить на ноль низзя»

тебя из школы в каком классе выгнали? НЕЛЬЗЯ ДЕЛИТЬ НА НОЛЬ. Если ты этого не понимаешь, просто вызубри и тупо запомни. Если мне не веришь, спроси свою учительницу.

На вопрос где они используют бесконечность(результат деления на ноль), ответить не могут.

там не бесконечность, а NaN или по-русски НЁХ. Используется IRL сплошь и рядом. И конечно представлена в полный рост в любом ЯП. Например задумайся, что написать в графу «дата смерти» для тебя? Не обольщайся, это НЕ бесконечность.

drBatty ★★
()
Ответ на: комментарий от anonymous

Любому программисту очевидно, что это идиотизм.

ну как самый умный, ты сейчас конечно всем расскажешь, как правильно надо делить на ноль? Жду с нетерпением.

И только PHP-программистам это кажется нормой. Вы таки неисправимы.

ЯП должен следовать своей документации и своим стандартам, и только ей/им.

Создатели C/C++ просто отмахнулись от проблемы, впрочем как всегда

C99 6.5.5p5 - The result of the / operator is the quotient from the division of the first operand by the second; the result of the % operator is the remainder. In both operations, if the value of the second operand is zero, the behavior is undefined.

C++03 5.6.4 - The binary / operator yields the quotient, and the binary % operator yields the remainder from the division of the first expression by the second. If the second operand of / or % is zero the behavior is undefined.

По-русски это означает, что при делении на ноль происходит НЁХ.

По твоему это лучший вариант?

drBatty ★★
()
Ответ на: комментарий от tp_for_my_bunghole

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

Делить на ноль не хорошо и не плохо, это НЕ ИМЕЕТ НИКАКОГО СМЫСЛА. Именно потому, результат такой «операции» вполне логичен, и он и _должен_ быть FALSE. Ложь. Сколько раз вам можно разъяснять, что ложь !== 0 ?! Она эквивалентна тогда, и только тогда, когда нам требуется получить ответ на вопрос: «удалось-ли выполнить операцию? да/нет?». Если ответ FALSE, операция провалилась. Если НЕ FALSE, то операция удалась, и можно смело использовать результат. Вполне логично, я полагаю.

drBatty ★★
()
Ответ на: комментарий от forCe

PHP явно слил

тред в очередной раз доказал, что единственная беда php — толпы быдлокодеров, которые ничего кроме него не знают, даже арифметики в размере куса начальной школы ☹

Например радостно делят на ноль.

Тут вариантов немного - exception(сигнал в случае сишки вполне нормален)

в сишке нет никаких сигналов. Не путай со старыми x86 процессорами. В новых CPU НЁХ опят пугает своей непредсказуемостью:

#include <stdio.h>

int main(int argc, char *argv[])
{
	int x = 1;
	int y = argc - 1;
	printf("%d / %d == %d\n", x, y , x/y);
	return 0;
}
результат:

Исключение в операции с плавающей точкой

ИЧСХ — полное соответствие стандарту: может произойти ВСЁ ЧТО УГОДНО, в т.ч. и исключения с плавающей точкой, хотя тут у нас ЦЕЛЫЕ (и в коде тоже целые). Издевательство архитекторов x86 становится очевидным, если вспомнить, что как раз при плаующей точке никаких исключений нет, а есть результат, хотя и неправильный.

drBatty ★★
()

Отмечюсь. Работал с php и python, оба для меня «неродные» языки. Для вас вообще не имеет роли с чего начинать. Особенно не имеет роли изучать язык с фрейморков - вы ничего не поймете в том самом программировании. А тем более в короткие сроки. Поэтому правильный вопрос данного топика: какой инструмент выбрать в качестве «пробного» пера. Ответ - любой. Из вас ни через месяц, ни даже через год не выйдет ни профессионального пхп-шника, ни профессионального питониста. Для этого нужно потратить кучу времени, лет десять, а то 20 минимум. Поэтому камень в огород насчет пхп можно смело забыть. Вы до этого уровня, а именно разбора полета, когда эти минусы будут вредить вашему проекту - просто не достигнете когда даже запустите альфа-версию проекта. Может ли «сломать мозг» пхп ? Нет, Дейкстра говорил про Бейсик, например. Пхп это не бейсик. И чето никто не бунтуется против того же JS - где такие «особенности», которых вообще нет ни в каких других ЯП. Ну, где это видано, чтобы определить число в переменной или нет, надо зайдействовать 4 (sic!) разные проверки?

Насчет «get the bad facts about PHP»: главная проблема автора сего чуда в том, что он умудрился упомянуть Perl в контексте ООП. Епрст, в перле вообще нет никакого ООП, есть его подобие, но не более. Объекты в виде хэшей в пхп, так они в перле есть. Более того любой объект в перле это всего лишь тип + мета-инфа с именем класса, которые на самом деле описаны в одной структуре на си. Действия над таким «объектом» можно производить любые (в зависимости от первоначального типа): у хэшей можно перебирать ключи и значения, у массивов обращения по индексу, у скаляров - запись непосредственного значения через разыменовывания.

package My::Pkg;

sub new {
  my $class = shift;
  my $self = bless {}, $class;
  $self->{counter} = 0; # initial value
  $self;
}

sub set {
  if (@_ > 1) {
    $_[0]->{counter} = $_[1];
  } else {
    die "not enough arguments";
  }

  $_[0]; # return self by design
}

sub get {
  return $_[0]->{counter};
}

1;

package main;

$\ = "\n";

use Data::Dumper;

my $object = new My::Pkg;

# bad Perl OO-design

print "Before:";
print Dumper $object;

$object->{counter} = 'I am super hacker!';

for my $key (keys %$object) {
  delete $object->{$key}; # haha, perl like php!
}

print "After:";
print Dumper $object;

Из чего делаем вывод, что автор троль, который по сути вообще ничего не знает. Про перл, по крайне мере, точно. Более того его опусы про пхп вообще не стоит расценивать на веру.

Существует как масса плохого кода на пхп, так и масса на питоне. Ваш код будь он хоть на золотых плюсах написан будет плохим кодом в любом случае.

А если смотреть в будущее, то есть статистика: из 10 идей взлетает только 1. И ваши шансы точно такие же. Тем не менее, есть масса примеров, где и пхп и питон оказываются примером для подражания. И фреймворки нигде не спасали - везде надо хакать ЯП так, что у обычных людей мозгов на это не хватает. А чтобы такое «проворачивать» нужен труд и терпение :)

gh0stwizard ★★★★★
()
Последнее исправление: gh0stwizard (всего исправлений: 1)
Ответ на: комментарий от tp_for_my_bunghole

Ну словил ты exception, и что? Ты знаешь что дальше делать с программой?

В большинстве случаев, его не нужно ловить. Если у тебя деление на 0, то это говорит об ошибке программирования: не проверили входные параметры, что-то неправильно посчитали до. Поймал - полез чинить. И твоя арифметика не загромождена кодом обработки эксепшенов. Возвращять false (да еще с ворнингом, ппц, типа если забыли обработать, ну хоть в логе через неделю найдем) - самое дебильное решение.

dizza ★★★★★
()
Ответ на: комментарий от drBatty

Деление на 0 - это баг в программе. Мне об этом сообщит любой язык, включая сишечку. Неважно каким способом. PHP же тупо продолжит выполнятся с false. Все остальное, что ты написал - демагогия.

anonymous
()
Ответ на: комментарий от dizza

Именно. Причем откровенно дебильное... Что тут вообще обсуждать?

anonymous
()
Ответ на: комментарий от tp_for_my_bunghole

Отсутствие приватных методов/переменных класса в python, значит ли это что python сливает по сравнению с php?

Почему нет, вроде есть же?

pi11 ★★★★★
()
Ответ на: комментарий от tp_for_my_bunghole

Отсутствие приватных методов/переменных класса в python, значит ли это что python сливает по сравнению с php?

Отсутствие приватных членов действительно косяк питона. Но это не значит, что он сливает. Там есть несколько косяков, как и в любом нормальном языке. PHP же полон косяков.

dizza ★★★★★
()
Ответ на: комментарий от anonymous

Причем здесь язык? Я говорю о том как ведет себя один из оппонентов. Натуральный фанатик, аж пена из под букв.

Axonom
()
Ответ на: комментарий от gh0stwizard

Из вас ни через месяц, ни даже через год не выйдет ни профессионального пхп-шника, ни профессионального питониста. Для этого нужно потратить кучу времени, лет десять, а то 20 минимум.

постараемся сократить этот длинный путь глубоким абстрактным мышлением и хитростью, которую «профессионалы» променяли на опыт — полезная штука, но не всемогущая.

Читая комментарии я пришел к выводу для себя: при наличии хорошо проработанного алгоритма своей задачи — писать приятно на любом языке.

К слову о выборе, мы решили этот вопрос кардинально по-другому выбрав «Ruby way». :)

NiceForce
() автор топика
Ответ на: комментарий от anonymous

Деление на 0 - это баг в программе. Мне об этом сообщит любой язык, включая сишечку. Неважно каким способом. PHP же тупо продолжит выполнятся с false.

выше предоставлены пруфы того, что всё с точностью наоборот: php сообщает об ошибке, возвращая НЕЧИСЛО. Причём это поведение документировано и ОПРЕДЕЛЕНО. Дальнейшие действия зависят исключительно от программиста: если он быдлокодер, то он тупо этого не замечает, и кастует НЕЧИСЛО в число. ССЗБ. Нормальный кодер в силах это проверить, благо в мануалах это всё расписано подробно.

В сишечке наблюдаем прямо противоположную ситуацию — компилятор даже и не пытается ничего проверять, а тупо отдаёт машинный код, который тупо делит на ноль. Далее всё происходит именно по стандарту C/C++: а именно поведение НЕ ОПРЕДЕЛЕНО. Конкретно с моим камнем/ОС оно выдаёт «бесконечность» (что неправильно в принципе) для чисел double, а для чисел int выдаёт ВНЕЗАПНО «исключение FPU». Если-бы этот код выполнил rm -rf /, я-бы нисколько НЕ удивился.

Все остальное, что ты написал - демагогия.

не нужно принимать желаемое за действительное.

drBatty ★★
()
Ответ на: комментарий от dizza

И твоя арифметика не загромождена кодом обработки эксепшенов. Возвращять false (да еще с ворнингом, ппц, типа если забыли обработать, ну хоть в логе через неделю найдем) - самое дебильное решение.

ЯП должен быть цельным. В php принято возвращать на невыполнимую операцию FALSE. Это лучше, чем Linux/glibc/C/C++, в котором иногда возвращается NULL, иногда -1, иногда 0, а иногда просто всем пох. (как в случае деления на ноль).

drBatty ★★
()
Ответ на: комментарий от dizza

PHP же полон косяков.

это всего-лишь глупые предрассудки. Да, неожиданности есть в php, однако их не больше, чем в любом другом ЯП(я не беру всякую академическую ерунду, на которой кроме helloworld'ов ничего не написано, они да, идеальные).

drBatty ★★
()
Ответ на: комментарий от drBatty

Я про это писал уже выше. PHP - полное говно. Но успех проекта в принципе мало зависит от языка. То есть моя позиция такая, да php - говно, да - его можно смело брать, хотя бы по причине дешевой поддержки.

dizza ★★★★★
()
Ответ на: комментарий от anonymous

Разве есть места в пыхе, где не накосячили создатели?

ВНЕЗАПНО: деление на ноль — как раз то самое сильное место php. Есть и ещё много такого. Просто ты не умеешь их готовить.

drBatty ★★
()
Ответ на: комментарий от drBatty

ЯП должен быть цельным.

Да.

В php принято возвращать на невыполнимую операцию FALSE

Ужасное дизайн решение. Это придает PHP такую же цельность, как и куче говна.

Это лучше, чем Linux/glibc/C/C++, в котором иногда возвращается NULL, иногда -1, иногда 0, а иногда просто всем пох. (как в случае деления на ноль).

Ну это вообще дурь. Хотя опять же, привыкнуть не сложно. И не к такому говну привыкали, и проекты в срок делали.

dizza ★★★★★
()
Ответ на: комментарий от Deleted

Сейчас в большинстве второй, на третий переползут еще не скоро.

ну вот видишь, какая беда с пайтоном… И как на нём можно писать что-то серьёзней гуя для обновления?

drBatty ★★
()
Ответ на: комментарий от drBatty

Больше, много больше. Он фактически состоит из недостатков. Достоинств в современном мире у него вообще нет.

anonymous
()
Ответ на: комментарий от pi11

Эскалирование с технического уровня, на огранизационный. Жить можно, и не такое эскалировали. Чисто экономически нет разницы. Есть просто субъективное ощущение копания в говне.

dizza ★★★★★
()
Ответ на: комментарий от dizza

Я про это писал уже выше. PHP - полное говно.

хотя бы по причине дешевой поддержки.

тебе не кажется, что у тебя как раз тот случай, когда скупой платит дважды? Ты нанимаешь копеечных «специолистов», и на выходе получаешь говнокод, за который платишь копейки. Это твоё право, но при чём тут ЯП?

drBatty ★★
()
Ответ на: комментарий от drBatty

«Поведение не специфицировано». И зависит от реализации. Так вот в linux-реальности процесс будет убит соответствующим сигналом, будет создана корка. Остальное - твои влажные фантазии. А возвращать false - идиотизм. Хотя я в курсе, что false в пыхе часто используется для имитации option-типа(option, nullable, boost::optional, Maybe, etc.). Но деление явно не тот случай. Особенно с учетом каста false к нулю. То, что дебилизм документирован не делает его менее дебильным.

anonymous
()
Ответ на: комментарий от drBatty

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

А как надо? Отвалить кучу бабла гламурным руби-хипстерам, а потом отвалить еще кучу таким же хипстерам за поддержку?

Это твоё право, но при чём тут ЯП?

Язык действительно не причем, я же написал. Конъюнктура рынка причем.

dizza ★★★★★
()
Ответ на: комментарий от drBatty

деление на ноль — как раз то самое сильное место php

Боюсь представить себе слабые... Кстати, а чем полезно такое деление? Можно пример?

anonymous
()
Ответ на: комментарий от dizza

В php принято возвращать на невыполнимую операцию FALSE

Ужасное дизайн решение.

предложи другое. По мне, так это самое простое, быстрое, экономичное, и всем понятное решение. Особенно учитывая тот простой факт, что само по себе деление возникает довольно редко, и уж тем более равенство нулю знаменателя — случай вообще исключительный. IRL часто невозможный в принципе, а если возможный, то он нуждается в особой обработке. Вернуть FALSE — вполне естественно. Или ты будешь спорить, что неправильно возвращать FALSE конструкции

strpos("ЖОПА", "Ё");
Что возвращать в этом случае?

drBatty ★★
()
Ответ на: комментарий от NiceForce

выбрав «Ruby way»

Отлично. Даже если у вас ничего не выйдет, у вас больше шансов не стать быдлокодерами.

anonymous
()
Ответ на: комментарий от drBatty

Это есть, но я имел в виду «технические» достоинства.

anonymous
()
Ответ на: комментарий от anonymous

«Поведение не специфицировано». И зависит от реализации. Так вот в linux-реальности процесс будет убит соответствующим сигналом, будет создана корка. Остальное - твои влажные фантазии.

пойми простую вещь: эта корка НЕ зависит от ЯП. ЯП тупо положил болт на ситуацию. Что в Windows, что в Linux, что в MacOS.

А возвращать false - идиотизм.

предложений не слышу.

false в пыхе часто используется для имитации option-типа(option, nullable, boost::optional, Maybe, etc.). Но деление явно не тот случай. Особенно с учетом каста false к нулю. То, что дебилизм документирован не делает его менее дебильным.

это как раз ТОТ случай. Результат деления на ноль по определению НЕЧИСЛО. И не строка, и не массив, и не объект, а типичная НЁХ.

drBatty ★★
()
Ответ на: комментарий от dizza

Язык действительно не причем, я же написал. Конъюнктура рынка причем.

ну вот то-то и оно.

drBatty ★★
()
Ответ на: комментарий от tp_for_my_bunghole

Где-то прочитали что «делить на ноль низзя»

ВНЕЗАПНО, на ноль делить нельзя.

ymn ★★★★★
()
Ответ на: комментарий от drBatty

какая еще беда? если надо, то ставят рядом 2&3.

И как на нём можно писать что-то серьёзней гуя для обновления?

не знаю, спроси тех кто пишет инсталляторы например.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.