LINUX.ORG.RU
ФорумTalks

Подгоревший питон со вкусом багета

 , ,


4

5

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

★★☆

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

его можно написать даже на баше, с помощью стандартных утилит для работы с текстом

Ты чем любишь картошку копать? Я - лопатой. Но некоторые копают вилами, им так удобнее.

pacify ★★★★★ ()
Ответ на: Но он же не работает!!11 от ggrn

Но он же не работает!!11

Ты тоже копипастишь с инторнетов «ls -la /home/jonny» в свою убунточку и вопишь что ничего не работает?

Ну что ты там выдал то? Неработающий однострочник?

Приведи хотя бы один пример, когда он не работает. Маркеры начала и конца блока - строка в которой есть только пробелы/табы и любой символ или набор символов неиспользуемый в пистоне. Расставь блоки маркерами, прогони через однострочник и получишь валидный питонокод с говноотступами. Если ты не способен заменить внезапно оказавшиеся используемыми в пистоне {} на какие-то другие маркеры начала и конца блока - то ты просто дебил.

Stanson ★★★★★ ()
Ответ на: комментарий от i-rinat

Вообще, использовать для одного языка форматтер другого — наивно. Взять, к примеру:

Ты похоже вообще не понял, для чего и как там используется indent. :) Оно там тупо счётчик и добавлятель пробелов в текущем блоке, а питоностроки посредством добавления ; просто преобразуются в некие псевдоконструкции на которые indent не будет обращать внимания. Их вообще можно в кавычки какие-нибудь обрамлять.

Впрочем, сложно ожидать какого-либо понимания от питонолюбца.

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

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

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

Не вникал, это правда. Смысла нет. Вот тебе твой же пример, но с немного другим форматированием. Чего-то его твой скрипт плохо переваривает.

$ cat source.py 
import dbus
import dbus.service
import dbus.mainloop.glib

import gobject

foo = { "xy": 0 }

class Service(dbus.service.Object): { def __init__(self, message): { self._message = message}}
$ cat source.py | perl -pe 's/\n/;\n/;s/\s*(if|for|while)\s+/_$1 /;s/{(.*)}/_CB_$1_CB_/g' | indent -i4 -nut -nbbo -npro -nbc -nbfda -nhnl -npsl -l500 -st | perl -pe 's/^\s*[{}]+;\n//;s/\s*;//;s/_(if|for|while)/$1/;s/_CB_(.*)_CB_/{$1}/'
import dbus
import dbus.service
import dbus.mainloop.glib

import gobject

foo = { "xy":0 }

class Service (dbus.service.Object):_CB_ def __init__ (self, message):
{
self._message = message}

_CB_
$ 
i-rinat ★★★★★ ()
Ответ на: комментарий от Stanson

Посмотрите на "Дебила"

Вот держи код с твоими скобочками. Ступай газифицируй дальше норкоман

def djyebok_ni4erta_ne_rabotaet(f=0, u=1):
{
    if f < u:
    {

        return {'dJ_yeb_ok!!111':['a','y',{'Syko Typa9':'don\'t w0rk'}]}
    }

    return [i for i in range(10)]
}

if __name__ == "__main__":
{
    djyebok_ni4erta_ne_rabotaet(1,2)
}

test@pikachu /tmp/trash➜ cat xtrash.py | perl -pe 's/\n/;\n/;s/\s*(if|for|while)\s+/_$1 /;s/{(.*)}/_CB_$1_CB_/g' | indent -i4 -nut -nbbo -npro -nbc -nbfda -nhnl -npsl -l500 -st | perl -pe 's/^\s*[{}]+;\n//;s/\s*;//;s/_(if|for|while)/$1/;s/_CB_(.*)_CB_/{$1}/' 

def djyebok_ni4erta_ne_rabotaet (f = 0, u = 1):
    if f < u:

      return _CB_ 'dJyebok!!111':['a', 'y',
         {
      'Syka Typa9':'don\'t w0rk'}
        ]_CB_

    return[ifor i in range (10)]


if __name__ == "__main__":
    djyebok_ni4erta_ne_rabotaet (1, 2)

и вопишь что ничего не работает?

лавров.жпег

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

Или, вот отформатируй это:

class Service(dbus.service.Object):
{
  #/*
  def __init__(self, message):
        {
        self._message = message
def func():
                {
            pass
        }
    }
}

Желательно, не в этот ужас:

class Service (dbus.service.Object):
#/*
  def __init__(self, message):
        self._message = message
def func():
            pass

Я же писал тебе, в чём ошибка в твоём предположении. Зазнался?

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

Чего-то его твой скрипт плохо переваривает.

Ещё раз. В скрипте маркеры начала и конца блока - {} Если вдруг почему-то в пистоне внезапно оказалось что эти скобки тоже для чего-то используются, то разумеется глупо пытаться использовать те же маркеры для решения задачи. Выбери другие маркеры, перед скармливанием инденту замени все пистоновые { и } на что-то другое, а маркеры блока на {} и скорми это инденту.

Я не имею понятия, что такое {} в пистоне и что они означают, и до сего дня даже не знал, что они в пистоне вообще используются.

На тебе другой однострочник:

cat source.py
import dbus
import dbus.service
import dbus.mainloop.glib

import gobject

foo = { "xy": 0 }

class Service(dbus.service.Object): { def __init__(self, message): { self._message = message}}

if __name__ == "__main__":
_begin
   Service("This is the service").run()
_end
cat source.py | perl -pe 's/^[\n ]*//;s/"/\\"/g;s/^(.+)$/"$1";/;s/"_begin";/{/;s/"_end";/}/' | indent -i4 -l500 -st | perl -pe 's/^\s*{\n//;s/^\s*}//;s/^(\s*)"(.*)";/$1$2/;s/\\"/"/g'
import dbus
import dbus.service
import dbus.mainloop.glib

import gobject

foo = { "xy": 0 }

class Service(dbus.service.Object): { def __init__(self, message): { self._message = message}}

if __name__ == "__main__":
    Service("This is the service").run()

Маркеры блоков - _begin и _end на отдельной строке.

Что делает перл:

# до indent:
s/^[\t ]*//; # удалить все пробелы и табы в начале строк
s/"/\\"/g; # заэскейпить все двойные кавычки 
s/^(.+)$/"$1";/; # обернуть каждую непустую строку в кавычки и поставить точку с запятой, для indent это будет просто текстовая строка и ковырять он её не будет
s/"_begin";/{/; # заменить все строки "_begin"; на {
s/"_end";/}/ # заменить все строки "_end" на }

Таким образом, каждая строка питоносырца для indent предстанет просто сишной строкой, с которой ничего делать не надо. Маркеры начала и конца блоков заменятся на {}. Такой текст будет представлять для indent валидный сишный код, состоящий только из строк и блоков.

Выглядит промежуточный текст так:

"import dbus";
"import dbus.service";
"import dbus.mainloop.glib";

"import gobject";

"foo = { \"xy\": 0 }";

"class Service(dbus.service.Object): { def __init__(self, message): { self._message = message}}";

"if __name__ == \"__main__\":";
{
"Service(\"This is the service\").run()";
}

после indent получаем такое:

"import dbus";
"import dbus.service";
"import dbus.mainloop.glib";

"import gobject";

"foo = { \"xy\": 0 }";

"class Service(dbus.service.Object): { def __init__(self, message): { self._message = message}}";

"if __name__ == \"__main__\":";
{
    "Service(\"This is the service\").run()";
}

Теперь вернём всё назад:

#после indent
s/^\s*{\n//; # удалить все строки с одинокими {
s/^\s*}//; # удалить все одинокие }
s/^(\s*)"(.*)";/$1$2/; # вынуть из "ssss"; содерижимое и сохранить отступы
s/\\"/"/g # разэскейпить двойные кавычки.

Получаем отформатированный пистонокод.

Каким боком тут синтаксический анализ и прочее - хрен его знает. indent тупо используется как вставлятель пробелов и ничего больше.

Всё то же самое можно написать только на перле без indent. В предыдущих мессагах можно найти чисто перловый вариант, и заменив в нём {} на выбранные маркеры начала и конца блока получить тот же самый результат.

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

Я не имею понятия, что такое {} в пистоне и что они означают, и до сего дня даже не знал, что они в пистоне вообще используются.

Эпик. Дальше можно было ничего не писать.

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

i-rinat ★★★★★ ()
Ответ на: Посмотрите на "Дебила" от ggrn

Ты и правда настолько туп, что не можешь поменять скобочки на что-то другое, раз они в пистоне что-то означают?

На, я за тебя поменял, ибо не дебил. Всё отлично работает:

$ cat xtrash.py
def djyebok_ni4erta_ne_rabotaet(f=0, u=1):
_begin
    if f < u:
    _begin

        return {'dJ_yeb_ok!!111':['a','y',{'Syko Typa9':'don\'t w0rk'}]}
    _end

    return [i for i in range(10)]
_end

if __name__ == "__main__":
_begin
    djyebok_ni4erta_ne_rabotaet(1,2)
_end
$ cat xtrash.py | perl -pe 's/^[\t ]*//;s/"/\\"/g;s/^(.+)$/"$1";/;s/"_begin";/{/;s/"_end";/}/' | indent -i4 -iut -l500 -st | perl -pe 's/^\s*{\n//;s/^\s*}//;s/^(\s*)"(.*)";/$1$2/;s/\\"/"/g'
def djyebok_ni4erta_ne_rabotaet(f=0, u=1):
    if f < u:

        return {'dJ_yeb_ok!!111':['a','y',{'Syko Typa9':'don\'t w0rk'}]}


    return [i for i in range(10)]


if __name__ == "__main__":
    djyebok_ni4erta_ne_rabotaet(1,2)
$ 

 cat xtrash.py | perl -e '$N=0;while(<>){$_=~s/^[\t ]*//;if($_=~/^_begin$/){$N+=4;}elsif($_=~/^_end$/){$N-=4;}else{print " " x $N . $_;}}'
def djyebok_ni4erta_ne_rabotaet(f=0, u=1):
    if f < u:
        
        return {'dJ_yeb_ok!!111':['a','y',{'Syko Typa9':'don\'t w0rk'}]}
    
    return [i for i in range(10)]

if __name__ == "__main__":
    djyebok_ni4erta_ne_rabotaet(1,2)

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

{} Если вдруг почему-то в пистоне внезапно

Как сказала железная леди весь питон можно выучить за 2 дня, что ж ты синтаксис за 10 минут не мог глянуть?

ggrn ★★★★★ ()

Система отступов — чудовищна.

Плюсую.

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

Сраные вендузятники. Ну до чего же вы тупые, а? Это пистоноподобные язычки так влияют?

$ cat piston.py
class Service(dbus.service.Object):
_begin
  #/*
  def __init__(self, message):
        _begin
        self._message = message
def func():
                _begin
            pass
        _end
    _end
_end
$ cat piston.py | perl -pe 's/^[\t ]*//;s/"/\\"/g;s/^(.+)$/"$1";/;s/"_begin";/{/;s/"_end";/}/' | indent -i4 -l500 -st | perl -pe 's/^\s*{\n//;s/^\s*}//;s/^(\s*)"(.*)";/$1$2/;s/\\"/"/g'
class Service(dbus.service.Object):
    #/*
    def __init__(self, message):
        self._message = message
        def func():
            pass

$ cat piston.py | perl -e '$N=0;while(<>){$_=~s/^[\t ]*//;if($_=~/^_begin$/){$N+=4;}elsif($_=~/^_end$/){$N-=4;}else{print " " x $N . $_;}}'
class Service(dbus.service.Object):
    #/*
    def __init__(self, message):
        self._message = message
        def func():
            pass


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

1. Кто то пытается меня обмануть, как же так вышло что у меня стало

    return[ifor i in range (10)] 
а у тебя
    return[i for i in range (10)] 
2. Ты дал решение и сказал что ВСЕ РАБОТАЕТ. Тебе указали на ошибку, нет бы признать что ты обосрался ты пытаешься выкрутиться. Все с тобой ясно.

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

Как сказала железная леди весь питон можно выучить за 2 дня, что ж ты синтаксис за 10 минут не мог глянуть?

А при чём тут вообще синтаксис? Если ты не способен абстрагироваться от частностей и конкретики - то как ты вообще разговаривать научился? Не допереть, что вместо {} можно использовать любые другие маркеры блока, если {} чем-то не устраивают, и не суметь заменить {} в однострочнике на что-то другое - это ж каким дебилом-то нужно быть?

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

Слушай, а зачем ты вообще это делаешь?
Разве ты не понимаешь, что ты говоришь с теми, кто обматерит тебя даже в том случае, если ты напишешь патч к ванильному Питону, который упразднит отступы и заменит их на какие-то другие маркеры?

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

Разве ты не понимаешь, что ты говоришь с теми, кто обматерит тебя даже в том случае, если ты напишешь патч к ванильному Питону, который упразднит отступы и заменит их на какие-то другие маркеры?

Что значит «даже»? Я ему тут и пытаюсь втолковать, что так и нужно делать. Просто регулярками не получится нормально. Даже если и выйдет, окажется, что по сложности это недалеко от родного парсера.

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

2. Ты дал решение и сказал что ВСЕ РАБОТАЕТ. Тебе указали на ошибку, нет бы признать что ты обосрался ты пытаешься выкрутиться. Все с тобой ясно.

Ты и правда настолько туп?

Если тебе приспичит посмотреть содержимое хомяка, ты полезешь в интернет и найдёшь там пример в виде «ls -la /home/jonny», то ты тоже будешь кидать дебильные предъявы написавшему это, что, мол, у тебя ничего не работатет, что это вообще не решение и требовать чтобы тебе всё разжевали и в рот положили?

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

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

Как раз ты не способен открыть и почитать про питон хотя бы даже Википедию.

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

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

_begin

Это что за покемон? Ты читать-то умеешь? Зачем кому-то твоё решение тобой придуманной задачи?

Сраные вендузятники. Ну до чего же вы тупые, а? Это пистоноподобные язычки так влияют?

Ты мне того чудика напоминаешь, который полдня пытался контейнер открыть. Особенно его раздражала большая надпись на боковой панели: «отодвинуть в сторону». У Шекли это было, что ли. Не помню точно.

i-rinat ★★★★★ ()
Ответ на: комментарий от Stahl

Слушай, а зачем ты вообще это делаешь?

Ну как бы помимо вот этих:

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

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

Stanson ★★★★★ ()
Ответ на: комментарий от i-rinat

Это что за покемон? Ты читать-то умеешь? Зачем кому-то твоё решение тобой придуманной задачи?

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

Слушай, у тебя вообще абстрактное мышление есть? Ты способен понять фразу «маркер начала блока» и осознать что в примере может быть в качестве этого маркера что угодно, и что если маркер из примера не нравится, то его можно поменять на то, что нравится? Или ты ни на что кроме тупой копипасты и повторения вбитых кем-то действий не способен?

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

Не нравится - замени на другой

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

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

Как насчёт { и }?

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

Мне как-то фиолетово. Тут ты взялся фигурные скобки в отступы переводить, но не осилил.

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

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

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

Как насчёт { и }?

А как насчёт «я хочу использовать слово for для маркировки начала блока, и слово class для маркировки конца блока»? Выбирать маркеры - тебе. Если ты хочешь выстрелить себе в ногу - используй хоть {}, хоть for/class. То, что какие-то определённые значки или их наборы не стоит использовать в качестве маркеров блока из-за уже имеющегося значения оных в языке, никак не меняет сути вопроса - отступы в питоне это просто блажь разработчика языка.

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

Если ты хочешь выстрелить себе в ногу - используй хоть {}

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

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

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

Всё точно так же элементарно, как и раньше. Код в котором блоки обозначены маркерами элементарно превращается в код, с блоками в пистоностиле и обратно. И я вообще ничего не считал. Разговор был про {} - ну и получите пример с {}. А если {} в пистоне имеют своё собственное значение - так идиот тот, кто это знал и с самого начала про них говорить начал как о конкретных маркерах, а не как об абстракции.

Опять-же, что ж ты при цитировании стыдливо опустил упоминание for/class в качестве негодных маркеров? Уж больно наглядной становится твоя дремучесть и бессмысленность заданного вопроса?

Если ты не умеешь в абстракции и общие понятия - то тебе на какой-нибудь винфак надо, или ещё куда, где такие же как ты толпятся. Наверно есть же какой-нибудь форум, где общаются всякие пистонолюбы.

Интересно, ты вот когда копипастишь пистонолапшу из «правильных мест в интернете» тоже неспособен подставить в скопипащенном коде свои идентификаторы вместо foo и bar и разводишь пустой флейм, говоря что код не рабочий и что тебе все должны написать сходу пример с твоими идентификаторами?

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

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

Нет, это экономика - попробуй убедить заказчика оплатить n дополнительных человекочесов - это как с твоим эмбедом, только лимит деньги

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

Разговор был про {} - ну и получите пример с {}. А если {} в пистоне имеют своё собственное значение - так идиот тот, кто это знал и с самого начала про них говорить начал как о конкретных маркерах, а не как об абстракции.

Разговор был про Python. Тот факт, что ты не удосужился посмотреть синтаксис языка, а сразу полез корёжить его скриптами, это не проблемы окружающих.

Опять-же, что ж ты при цитировании стыдливо опустил упоминание for/class в качестве негодных маркеров?

Когда ты осознал, что фигурные скобки используются в языке (сюрприз!), начал вместо этого придумывать другие ключевые слова. Сначала выбрал _begin и _end, потому что побоялся брать begin и end из-за возможных коллизий. А потом предложил взять такие, которые точно дадут коллизию. Это твои игры с собой. Зачем мне в них лезть?

i-rinat ★★★★★ ()
Ответ на: комментарий от kukuruku

детка, мой «сишный мирок» представляет собой подавляющее количество систем, библиотек и приложений в мире. неплохой «мирок», надо сказать. и все ваши пистоны без С - просто ничто. потому что они не существуют без С/C++. и когда ламеры начинают ругать С, они почему-то забывают про Линюкс, про все те эмбеддед девайсы, которыми пользуются каждый день, про кучу автоматики, про автомобили, про многое другое, что использует сишный код.

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

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

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

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

Разговор был про Python. Тот факт, что ты не удосужился посмотреть синтаксис языка, а сразу полез корёжить его скриптами, это не проблемы окружающих.

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

Чтобы это понять совершенно необязательно знать что-то про питон. Для меня это понятно сразу. Для пистонолюбцев приходится разжёвывать примеры.

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

Мне не нужно ничего осознавать вообще про язык для меня скобка - это абстракция. Мне без разницы чем оперировать - скобками, эмодзями, загогулинами или вообще наборами символов, ибо это всё просто пример абстрактного понятия «маркер начала/конца блока». Это твоя задача - посмотреть на рабочий пример и поменять в нём абстракции на конкретику, соответствующую твоей области применения.

Походу ты таки не умеешь в абстрактное мышление совсем. :) Ты можешь 100500 раз подрочить на скобки (которые совсем не я придумал, и которые я никогда не рассматривал как конкретные маркеры), от этого ничего не изменится.

Спрошу ещё раз: Интересно, ты вот когда копипастишь пистонолапшу из «правильных мест в интернете» тоже неспособен подставить в скопипащенном коде свои идентификаторы вместо foo и bar и разводишь пустой флейм, говоря что код не рабочий и что тебе все должны написать сходу пример с твоими идентификаторами?

Ответь уже, наконец, на этот простой вопрос.

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

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

А с каких пор этот мирок твой? Твой - гораздо, гораздо меньше.

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

Си - устаревшее говно. И то, что на нем написано много полезных программ, не меняет этого факта.

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

Иногда от кодстандартов приходится отходить в угоду, ВНЕЗАПНО, читаемости. На пестоне же это невозможно.

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

Первая же передача текста с ямлом и питоном через скайп или вордовский документ

А что, код можно передавать как-то иначе?

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

Си - устаревшее говно. И то, что на нем написано много полезных программ, не меняет этого факта.

Сколько вас таких уже прям натурально сдохло, а С как жил, так и живёт. :)

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

Причём, что интересно, всё это дрочево с написанием пистонов, похапе и прочих растов с гоу, несмотря на разнообразие целей и подходов, вовсе даже не преследует цель создания альтернативы С. Какие угодно цели преследуются - «чтоб макака могла написать хоть как-то работающий код», «чтобы много синтаксического сахара», «чтобы инкапсуляции с монадами и пользовать могли только полтора ботана», «чтобы херак-херак и в продакшн». Что угодно, но только не максимальное быстродействие + минимальный расход памяти + универсальность.

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

Всегда забавляло, что хвалящие PEP8 ни разу в него не заглядывали

И памятник надо за PEP8 поставить

https://www.python.org/dev/peps/pep-0008/#id14

This document gives coding conventions for the Python code comprising the standard library in the main Python distribution.

И чем это так примечательно, что нужно ставить памятник? Для GNU libstdc++ или там libcxx тоже есть coding convention. Им тоже ставить памятники?

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

Сколько вас таких уже прям натурально сдохло, а С как жил, так и живёт. :)

И какой вывод ты из этого делаешь?

всё это дрочево с написанием пистонов, похапе и прочих растов с гоу, несмотря на разнообразие целей и подходов, вовсе даже не преследует цель создания альтернативы С

Ты, как всегда, на своей волне.

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

И какой вывод ты из этого делаешь?

Вывод простой: Сколько вы не камлайте своим божкам и сколько заклинаний не произносите, а именно С ещё как минимум сотню лет будет самым распространённым, популярным и эффективным языком системного программирования. :)

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

А с каких пор этот мирок твой?

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

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

Ну окей. А как насчет ближайшей тысячи лет?

Чисто теоретически, может какие-нибудь совершенно иные принципы и архитектуры для обработки данных придумают, где программирование будет выглядеть совсем иначе. Но если ничего так и не выдумают, то С и тысячу лет будет жить и здравствовать.

В общем, пока будет жить существующая архитектура компьютеров С будет востребован.

Stanson ★★★★★ ()

А зачем скобочки ставить там, где и так уже понятно, что это блок. Какой-то капитан-очевидность. Может быть ещё надо конец строки ставить явно? Вдруг не поймёте, что нажав на Enter у вас на новую строку перейдёт.

Если я хочу поэкспериментировать с кодом, который приведён, допустим, на сайте в REPL, то в IPython использую cpaste. Он ест всё и неправильные пробелы, и табуляцию, и скобочки >>>.

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

Разговор был про некий текст.

Который является текстом программы на питоне. Ты читать умеешь?

Чтобы это понять совершенно необязательно знать что-то про питон. Для меня это понятно сразу.

Только вот твоё понимание оказалось ошибочным. Толку от «сразу», если понимание неправильно?

Ответь уже, наконец, на этот простой вопрос.

Вопрос из серии: «вы уже перестали бить свою жену?»

Ответ простой — я не копирую куски кода из интернета. Не приписывай мне.

Походу ты таки не умеешь в абстрактное мышление совсем. :)

Спорное утверждение. В такое, как у тебя, явно не умею. И это хорошо. Ты начал отвечать на Подгоревший питон со вкусом багета (комментарий), в котором было явно упомянуты фигурные скобки и Python. И предложенные тобой скрипты тоже ориентировались на фигурные скобки. А потом, когда ты осознал, что не всё так просто, внезапно появились абстрактные разделители.

Ошибка тут вот где: ты берёшь разделители, которых заведомо нет в языке. Это уже существенно другая задача, проще.

Может, у тебя есть абстрактное мышление. Но с прорехами в логике.

Давай я тебе поясню твой подход на примере. Возьмём игру в шашки. Как выиграть соперника? Рассмотрим абстракцию, где шашки не обязаны ходить по правилам. Вообще ходы не обязательны. Какая отличная абстракция! Убираем все шашки соперника с доски. Всё, мы выиграли!

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