LINUX.ORG.RU
ФорумTalks

За что не любят Python?


3

3

Объясните, пожалуйста. Вроде, все при нем - скриптовый, однако есть возможность компиляции в бинарник, синтаксис невырвимозгий... За что его не любят?

Перемещено post-factum из development

★★
Ответ на: комментарий от DNA_Seq

Я в который раз удивляюсь непроходимой тупости некоторых молекулярных биологов. Писать скрипты != разрабатывать полноценные приложения.

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

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

А для скриптов питон рулит и педалит. Руби конечно красивее, но у руби хуже с библиотеками.

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

Теоретики - за отступы

Это говонокодеры его за отступы не любят. Ибо приходится по-людски размечать текст.

Да и за то, что он как PHP почти во всем.

Особенно в том, что опечатка в имени переменной - это уже создание новой. Убил бы за это.

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

Это баг. Хоть бы паскалевские строки сделали, уже хлеб.

зависит от задач. Для 3.5 учебных хэлловорлдов - это баг. Надо свои реализации писать, а сложно учить на хэлловорлде, в Over9000 строчек. Для _реального_ кода это фича, ибо IRL всё равно юзают сторонние строчки (которые представляют все, кому не лень, от STL, и до любого тулкиита).

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

и потому я не вижу разницы, отступы или скобки. По моему мнению разница есть только в notepad.exe и прочих быдлоIDE.

Вот именно это я и пытался донести. Видимо, до некоторых метных обитателей плохо доходит, если их в процессе быдлом не называть.

плохо конечно. По моему мнению, проблема синтаксиса пайтона придумана исключительно школьниками, пишущими «код» в блокноте

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

проблема синтаксиса пайтона придумана исключительно школьниками, пишущими «код» в блокноте

В точку.

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

И потом, представь, вечер, написал портянку, устал, запарился, сдвинул пробелом, не заметил... и сидишь ловишь непонятки...

IDE тоже «не заметила»? Интерпретатор тоже? Так не бывает. И да, причём тут пробелы?

if(x == y)// это корректный код
    x++;
if(x == y);// это тоже корректный код
    x++;
не смотря на совершенно разную работу, этот код визуально слабо отличается, и кушается компилятором без проблем, даже с -Wall. В сишечке (и прочих сишка-подобных) таких проблем - Over9000, и ничего, живём...

PS: vim кстати такое не даст написать, только специально.

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

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

да, но только при выполнении одного важного условия: писать надо не на какой-то сишечке, а скажем на пайтоне, где УЖЕ реализованы _всё_ нужные структуры данных и прочее, в чём твой пользователь разбирается также, как я в его «молекулярщине». Причём реализовано это должно-бы так, что-бы юзеру было _очень_ сложно сделать что-то неправильно. Практика показывает, что эти ваши «молекулярщики», при наличие N путей, выбирают самый кривой. Потому путь должен быть единственный. Пробелы из той-же серии: проще сделать пробелы обязательными, нежели объяснять их необходимость «молекулярщику», он всё равно не поймёт, да и не должен, ибо занимается другими проблемами.

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

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

А такие как ты способны только писать очередной М$ Офис, который создает проблем больше, чем решает.

э... Позвольте узнать, а кто пишет эти ваши пайтоны и прочие php?

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

а что будет если они начнут писать на уютной сишечке? Конечно с вероятностью 99% словят сегфолт, но веть есть 1% вероятность что школьник возомнит себя крутым погромистом и пойдет заливать свое поделие на гитхаб, которому начнут коммитить другие школьники.

пусть пишут. Жалко что-ли? Ты меня пугаешь что-ли?

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

Особенно в том, что опечатка в имени переменной - это уже создание новой. Убил бы за это.

это динамическая типизация. За что боролись... Но для hw это нормально, какая разница, как называется единственная переменная?

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

Для _реального_ кода это фича, ибо IRL всё равно юзают сторонние строчки (которые представляют все, кому не лень, от STL, и до любого тулкиита).

О да, конечно. Работал в нескольких конторах, ни в одной не видел, чтобы в коде не использовались char* или wchar_t*. И даже если ты найдёшь такие конторы, где нативные строки не используются, каким образом от этого их убогость становится фичей?

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

Пробелы из той-же серии: проще сделать пробелы обязательными, нежели объяснять их необходимость «молекулярщику», он всё равно не поймёт, да и не должен, ибо занимается другими проблемами.

True. Вот только почему при этом сделали выбор между пробелами и табами?

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

это динамическая типизация.

Вообще-то, нет. Динамическая типизация спокойно совмещается с явным объявлением переменных.

Miguel ★★★★★
()

«Любить/не любить» это эмоциональное, подсознательное отношение. Причины его выявить чаще всего не так просто.

синтаксис невырвимозгий

Может быть потому, что мозгий у всех разный, а у пользующихся питоном его вообще никто никогда не видел.

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

Для этого бейсик и придумали. Только вот не надо тут выдавать его за полноценный ЯП, на котором можно и нужно писать полноценные приложения.

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

писать надо не на какой-то сишечке, а скажем на пайтоне, где УЖЕ реализованы _всё_ нужные структуры данных и прочее, в чём твой пользователь разбирается также, как я в его «молекулярщине».

А я именно подобный подход и приветствую. И против разработчиков библиотек, если заметил, я никогда ничего не говорил (ну разве что в рамках тулкитосрача).

Более того, наличие библиотек вроде mathplotlib позволяет использовать питон как продвинутый шелл.

Практика показывает, что эти ваши «молекулярщики», при наличие N путей, выбирают самый кривой. Потому путь должен быть единственный.

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

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

А для скриптов питон рулит и педалит. Руби конечно красивее, но у руби хуже с библиотеками.

Я тоже это в один момент понял. Но потом сразу понял что мне ехать, а не шашечки

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

это динамическая типизация.

К динамической типизации это никак не относится. Кто мешал сделать всего одно ключевое слово (как var в javascript) для объявления переменой?

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

О да, конечно. Работал в нескольких конторах, ни в одной не видел, чтобы в коде не использовались char* или wchar_t*.

может не напрямую, а в самописных велосипедах?

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

фича в том, что ты можешь сделать _свою_ реализацию, идеальную для _твоей_ задачи.

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

True. Вот только почему при этом сделали выбор между пробелами и табами?

лично меня этот вопрос перестал _совершенно_ волновать, когда я осилил vim. Я об этом даже не задумываюсь - написал строку, нажал ENTER, редактор сделал отступ. Что там «\s\s\s\s» или «\t» - меня _вообще_ не волнует. Тебя волнует, как в БД ЛОРа представляется «Ф»? Нажал ты на Ф - я увидел Ф. Этого достаточно.

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

Вообще-то, нет. Динамическая типизация спокойно совмещается с явным объявлением переменных.

оно излишне. При динамической типизации компилятор сам должен определять тип. Если я написал

var x;
то я туда могу записать что угодно при ДТ. Зачем тогда писать var x?

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

Для этого бейсик и придумали. Только вот не надо тут выдавать его за полноценный ЯП, на котором можно и нужно писать полноценные приложения.

сейчас придут фанаты CL, и закопают тебя в дерьме. Вот тебе список, в который я невозбранно напихал всякого разного:

(list NIL 17 3.1415926 (list 1 2 3) (cons (cons 1 2) (cons 3 4)) (lambda (x) (sqrt x)))
(NIL 17 3.1415925 (1 2 3) ((1 . 2) 3 . 4) #<FUNCTION :LAMBDA (X) (SQRT X)>)
Как видишь: пожрал и не подавился. Ещё и обработать ЭТО может. Как скажешь...

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

А я именно подобный подход и приветствую. И против разработчиков библиотек, если заметил, я никогда ничего не говорил (ну разве что в рамках тулкитосрача).

«программисты» на C всегда испытывают соблазн своять _свою_ либу. А это плохо...

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

потому-что для достижения результата _можно_ использовать метод тыка в GUI, но в CLI - нельзя. Это и аргумент _против_ пайтона.

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

К динамической типизации это никак не относится. Кто мешал сделать всего одно ключевое слово (как var в javascript) для объявления переменой?

принципы пайтона:

Читаемость имеет значение.

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

Особые случаи не настолько особые, чтобы нарушать правила.

no comment

При этом практичность важнее безупречности.

практичнее объявлять переменные там-же. Ибо их всё равно можно переопределить(или не использовать).

Встретив двусмысленность, отбрось искушение угадать.

по записи var x никак не угадать, что такое x.

Должен существовать один — и, желательно, только один — очевидный способ сделать это.

очевидно, что переменные обявляются в момент первого использования. Когда ты пошёл в первый класс, тебя заставляли зубрить термины «абсцисса» и «интеграл»?

Хотя он поначалу может быть и не очевиден, если вы не голландец

no comment.

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

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

Кто мешает написать «var x» в конце?

по записи var x никак не угадать, что такое x.

Ячейка памяти. Динамическая типизация все же. А в большинстве случаев будет написано что-то типа «var x = getSomthing()».

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

Кто мешает написать «var x» в конце?

видимо, привычка из дельфей, а ведь подозревал я что с этими питонистами что-то не чисто

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

Кто мешает написать «var x» в конце?

та же самая не читаемость. А если писать в середине, где присваивание, то смысл писать? Мне это не понятно.

Ячейка памяти. Динамическая типизация все же.

почему не кортеж, не список, или не функция? Это только в в бейсике кроме «ячеек памяти» ничего больше и нельзя (ну ещё массивы).

А в большинстве случаев будет написано что-то типа «var x = getSomthing()».

и какой сакральный смысл в var?

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

Тебя волнует, как в БД ЛОРа представляется «Ф»?

На ЛОРе я не программист, а пользователь, так что вообще мимо кассы.

А то, что тебя это после осваивания vim'а перестало волновать, означает только одно: ты пишешь в одиночку.

может не напрямую, а в самописных велосипедах?

Не понял.

фича в том, что ты можешь сделать _свою_ реализацию, идеальную для _твоей_ задачи.

Сделать-то могу, но это не фича существующей хреновой реализации. Это можно было бы назвать фичей, если бы никаких реализаций вообще не было, а строковые литералы были полиморфными.

оно излишне. При динамической типизации компилятор сам должен определять тип.

Ты с дуба рухнул? При динамической типизации компилятор НЕ определяет тип, тип определяется в рантайме.

Зачем тогда писать var x?

Затем, чтобы описка в имени переменной была быстрее обнаружена.

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

На ЛОРе я не программист, а пользователь, так что вообще мимо кассы.

ну я я не писатель текстовых редакторов, потому меня тоже это мало колышит.

А то, что тебя это после осваивания vim'а перестало волновать, означает только одно: ты пишешь в одиночку.

как раз наоборот - VIM сам врубается, какие отступы ЗДЕСЬ приняты, и сам их расставляет. Т.е. я редактирую код в тех отступах, которые удобны _другим_, и создаю этим другим минимум проблем. У меня де вообще с этим нет проблем.

может не напрямую, а в самописных велосипедах?

Не понял.

что тут непонятного? сишные «строки» действительно неудобные as is, потому и используются обычно не на прямую, а через некую прослойку.

Сделать-то могу, но это не фича существующей хреновой реализации. Это можно было бы назвать фичей, если бы никаких реализаций вообще не было, а строковые литералы были полиморфными.

никаких реализаций и нет. Есть только удобные (более-менее) костыли (синтаксический сахар), которые позволяют работать со строками, как «с массивами». При этом надо всегда помнить, что никаких массивов в сишечке не предусмотрено, в том числе и для строк. Т.е. строка в Си не является не тривиальным типом, ни массивом символов. Её вообще нет в этом ЯП. И уж тем более - полиморфных. В сишечке есть только один полиморфный тип - это отсутствие типа (void*), да и то только для указателей. «тип непонятно чего» != «тип на что угодно». оно излишне.

При динамической типизации компилятор сам должен определять тип.

Ты с дуба рухнул? При динамической типизации компилятор НЕ определяет тип, тип определяется в рантайме.

вопрос «когда определяет» не имеет значения в данном случае. К тому же часто это ясно ещё на этапе компиляции. Ну если не ясно - компилятору придётся предусмотреть определение типа уже в рантайме. Т.е. если ты пишешь x+y, компилятору придётся просмотреть таблицу сложений, и выбрать одну из N^2 функций для сложения одной из комбинаций N типов. (если смириться с тормозами, то число функций можно уменьшить до 2*N для коммутативных двухместных операций).

Затем, чтобы описка в имени переменной была быстрее обнаружена.

такие описки прекрасно ловит автодополнение. Писать

var zxcvbnm;
zxcvbm = 2*2;
не вижу никакого смысла.

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

Я так понимаю в команде ты не работал?

Например, если я буду вносить изменение в твой код, в котором ты отбиваешь отступы тремя пробелами, VIM тоже будет использовать такой отступ. Т.е. тебе это понравится. Если твоя IDE так не умеет - твоя проблема. И твоей команды, если у неё другое IDE.

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

«программисты» на C всегда испытывают соблазн своять _свою_ либу. А это плохо...

А надо. Я вот, хоть и не программист, но «сваял» CGI-библиотечку. А сейчас, перечитывая вечерами в сортире книжицу по обработке изображений, подумываю о написании своего IMT, т.к. что-то гугол не подсказывает готовых библиотек, которые бы обеспечили мои потребности (мне вот, как-то понадобилось изофоты считать, так пришлось велосипедить; а потом оказалось, что в матлабе это уже есть — можно было бы нагло спереть — но зато в матлабе огорожено, а у меня GPL)

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

Ну так ты говоришь так, будто бы в любом случае это — плохо.

А насчет IMT я уже спрашивал как-то на ЛОРе. Вроде бы, такой библиотеки не существовало в природе. Странно: ведь обработкой изображений люди занимаются хрен те сколько. Ну неужто там все настолько огорожено анально, что нельзя забульбенить полностью GPL'ную библиотеку?

Вот, например, я для медианной фильтрации использую быстрый алгоритм из Numerical Receipies. Когда-то они были огорожены, но, ЕМНИП, уже давным-давно прошел срок огораживания и теперь эти алгоритмы — общественное достояние. Так неужто в обработке изображений все эти алгоритмы 10-летней давности до сих пор огорожены, если никто до сих пор вменяемой реализации под GPL не выложил?

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

После предыдущего твоего сообщения понял о чем ты. Отличный подход.

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

VIM сам врубается, какие отступы ЗДЕСЬ приняты, и сам их расставляет.

Хорошо, кроме тебя, код пишет только один человек.

сишные «строки» действительно неудобные as is, потому и используются обычно не на прямую, а через некую прослойку.

Если бы. Проблема в том, что удобных нет вообще. И не сделать.

никаких реализаций и нет.

Есть, конечно. char* (и wchar_t*). Поддержана языком на уровне литералов.

В сишечке есть только один полиморфный тип - это отсутствие типа (void*), да и то только для указателей.

void — это void, а не полиморфный тип.

вопрос «когда определяет» не имеет значения в данном случае.

Тогда к чему ты об этом вообще заговорил?

такие описки прекрасно ловит автодополнение.

Вводить каждую переменную автодополнением? Бред.

Писать ... не вижу никакого смысла.

Его и нет. Но необходимость об этом помнить никому нафиг не нужна.

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

та же самая не читаемость. А если писать в середине, где присваивание, то смысл писать? Мне это не понятно.

и какой сакральный смысл в var?

За что не любят Python? (комментарий)

почему не кортеж, не список, или не функция

При первом же присвоении она, если надо, станет и кортежем, и функцией. Главное - имя зарезервировано.

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

Особенно причесанные налысо правоверные атеисты :)

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

такие описки прекрасно ловит автодополнение.

Предлагаешь все переменные вводить автодополнением, будь там хоть 3, хоть 2 символа? На днях как раз застрял на баге, связанном с присвоением переменной «ids» значения строкой «isd = ...»

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

Ну так ты говоришь так, будто бы в любом случае это — плохо.

нет конечно.

А насчет IMT я уже спрашивал как-то на ЛОРе. Вроде бы, такой библиотеки не существовало в природе. Странно: ведь обработкой изображений люди занимаются хрен те сколько. Ну неужто там все настолько огорожено анально, что нельзя забульбенить полностью GPL'ную библиотеку?

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

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

Хорошо, кроме тебя, код пишет только один человек.

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

Если бы. Проблема в том, что удобных нет вообще. И не сделать.

нет «удобных для всех и всегда». Именно потому строк нет в C.

Есть, конечно. char* (и wchar_t*). Поддержана языком на уровне литералов.

char* это составной не примитивный тип указателя на целое число со знаком. С тем же успехом ты можешь считать «строки» строками в смысле паскаля, где первый байт - длинна строки. Это твои проблемы (единственное, тебе придётся написать свой string.h, но там просто).

void — это void, а не полиморфный тип.

void* это не void, а указатель неизвестно на что. Т.е. его _можно_ использовать как полиморфный тип.

Вводить каждую переменную автодополнением? Бред.

не вводить, а употреблять повторно.

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

Особенно в том, что опечатка в имени переменной - это уже создание новой. Убил бы за это.

это и есть создание новой переменной (возможно с уничтожением старой). Если ты описался в rvalue, то пайтон тебе даст по рукам:

>>> print x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined
но описка в lvalue это действительно создание новой переменной, и var тут не нужно. Нужно (авто)дополнение. И да, var тебя вряд-ли спасёт, т.к. повторное rvalue IRL нужно очень редко (в сишечке оно часто ведёт к утечкам памяти, хотя и допустимо. В других ЯП оно приводит к жутким тормозам, связанным с работой GC. Потому это скорее всего в любом случае быдлокод).

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

Предлагаешь все переменные вводить автодополнением, будь там хоть 3, хоть 2 символа?

я так и делаю.

На днях как раз застрял на баге, связанном с присвоением переменной «ids» значения строкой «isd = ...»

на самом деле, какой-бы не был-бы синтаксис, описаться всегда можно. И с твоими var - тоже. Можно сделать ЯП с хорошим синтаксисом, но зачем? Паскаль у нас уже есть. Только на нём пишут исключительно школьники. За то там присваивание - это именно =:, а написать begin ты никогда не забудешь. В отличие от незаметной и короткой {. Ну и кому он нужен в продакшене?

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

Если ты описался в rvalue, то пайтон тебе даст по рукам

Спасибо, кэп.

и var тут не нужно. Нужно (авто)дополнение.

Все с тобой ясно.

И да, var тебя вряд-ли спасёт, т.к. повторное rvalue IRL нужно очень редко

Может, все-таки, lvalue? Тут я не буду спорить, ибо плохо знаю нишу питона, но, например, для Си это утверждение неверно.

В других ЯП оно приводит к жутким тормозам, связанным с работой GC.

Интересно, почему?

в сишечке оно часто ведёт к утечкам памяти

К утечкам памяти обычно ведет питонщик/явист/шарпщик, севший за Си. Насмотрелся уже.

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

Может, все-таки, lvalue? Тут я не буду спорить, ибо плохо знаю нишу питона, но, например, для Си это утверждение неверно.

повторное присваивание в туже переменную. т.е. код типа

x = 2 + 2;
x = 4 + 4;
И дело тут не в языке совсем.

Интересно, почему?

потому-что всё содержимое x отправляется в мусор. Очевидно же! Относись к присваиванию более внимательно: x это вовсе не обязательно целое число, или что-то такое-же мелкое и незначительное.

К утечкам памяти обычно ведет питонщик/явист/шарпщик, севший за Си. Насмотрелся уже.

именно по этой причине. Вот типичный код:

T *x = new T;
//tl;dr
x = new X;
В C++ за питонщиком говно никто не убирает, и оно так и остаётся плавать в памяти. Обычное дело...

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

т.к. повторное rvalue IRL

Может, все-таки

не... Именно я про повторное rvalue. Вот например:

for(j = 0; j < 100500; j++)
{
    x = new int[1<<20];
    //tl;dr
}
ИЧСХ, этот говнокод даже работает(если есть GC или МНОГО памяти). Только он выделяет и _использует_ ровно 100500 миллионов int. Проблема в том, что new не знает про то, что память мы сейчас выкидываем в мусор, и выделяет новую ЗА ней.

ЗЫЖ я не знаю, почему эта ошибка такая распространённая.

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

повторное присваивание в туже переменную. т.е. код типа x = 2 + 2; x = 4 + 4; И дело тут не в языке совсем.

Ты либо никогда не писал ничего сложнее hello world, либо хорошо упоролся. Почему ж тогда в Си есть модификатор «const», а не какой-нибудь «not_const» или «modifiable»? Все потому что объектам свойственно менять свое состояние. И как ты собираешься это описывать без присвоения уже инициализированных переменных? А подсчет объектов, удовлетворяющих определенным условиям, алгоритмы поиска в структурах чуть более сложных, чем базовые контейнеры? Все это, значит, не нужно? Чем пытаться извернуться другими способами, лучше выкинуть язык, не позволяющий реализовать задуманную архитектуру.

потому-что всё содержимое x отправляется в мусор. Очевидно же!

Да, лучше создать еще десяток новых переменных. Тогда в мусор ничего не отправится, нет, оно просто все _останется_висеть_в_памяти_... пока, опять же, не отправится в мусор, причем, в том же объеме.

В C++ за питонщиком говно никто не убирает

А вот в плюсах есть такая штука как умные указатели.

for(j = 0; j < 100500; j++) x = new int[1<<20];

А за это по-хорошему надо бы на костре сжигать.

segfault ★★★★★
()
Последнее исправление: segfault (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.