Правильные основы программирования. Переменные

Поделиться
HTML-код
  • Опубликовано: 12 сен 2024
  • Скачайте Emcee для iOS из GitHub или из Docker Hub - для Android: emceetool.io/?...
    Или регистрируйтесь в Emcee Cloud: emcee.cloud/?u...
    Рассказываю зачем на самом деле нужны переменные в программирование и какие у них есть подводные камни. Раскрываю все их тайные механики и учу правильно распоряжаться новыми знаниями. Увеличь своё мастерство владения переменными за 7 минут и пойми самые глубокие истинные основные основы программирования.
    ---
    Подпишись на наш Telegram Канал 🖤 t.me/extremecode
    Лицензия Creative Commons Attribution 4.0 на использование трека Hyperfun (исполнитель: Kevin MacLeod): creativecommon...
    Источник: incompetech.com...
    Исполнитель: incompetech.com/

Комментарии • 473

  • @ExtremeCode
    @ExtremeCode  8 месяцев назад +11

    Братан, хорош, давай подпишись на наш Telegram канал, мы там байки и кулстори травим
    🖤 t.me/extremecode
    А для бустеров у нас есть эксклюзивный контент: boosty.to/extremecode

    • @VladimirNerby
      @VladimirNerby 8 месяцев назад

      Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик!

    • @LithiumDeuteride-6
      @LithiumDeuteride-6 8 месяцев назад

      да ладно, если нет памяти, но вернёт нулевой указатель. Хотя я тут про С/С++ и оператор new или функцию выделения памяти под объект. Хотя может произойти исключение и это надо это как-то обработать.

    • @IgorYegorkin
      @IgorYegorkin 8 месяцев назад

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

    • @101picofarad
      @101picofarad 8 месяцев назад

      @@IgorYegorkin не то чтобы самоуничтожаются, просто ни кто не заботится об их дальнейшей сохранности )

    • @101picofarad
      @101picofarad 8 месяцев назад

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

  • @qwerty2536
    @qwerty2536 8 месяцев назад +355

    Ставь лайк, если учился программированию исключительно по видосам экстримцоде и теперь работаешь охранником в пятерочке 👍

    • @jarre941
      @jarre941 8 месяцев назад +3

      учился исключительно по их роликам, но нормально вкатился в разработку

    • @qwerty2536
      @qwerty2536 8 месяцев назад

      @@jarre941 соболезную

    • @meme-potentialsearch8010
      @meme-potentialsearch8010 8 месяцев назад +16

      @@jarre941 Охранники так хорошо сишарпу учат?

    • @OLDbespreDEL
      @OLDbespreDEL 6 месяцев назад +1

      Я слесарь со "знанием" C#.

    • @jarre941
      @jarre941 6 месяцев назад +1

      @@meme-potentialsearch8010 не знаю, но вроде они ничего не делают, так что почему нет? Работать удаленно параллельно работая охранником в пятерочке?

  • @qwesdfsfsadf
    @qwesdfsfsadf 8 месяцев назад +187

    Жаль раньше не было такого контента, пришлось все учить через спецификацию

    • @user-ck2ij6qc4h
      @user-ck2ij6qc4h 8 месяцев назад +25

      Мурыч одобряет

    • @maratmkhitaryan9723
      @maratmkhitaryan9723 8 месяцев назад +39

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

    • @stasuchuvadov
      @stasuchuvadov 8 месяцев назад

      @@maratmkhitaryan9723 мы так тестеров подставляем на работе

    • @fuad2069
      @fuad2069 8 месяцев назад

      @@maratmkhitaryan9723 Разработчиком ассемблера?

    • @blackmercy-il9me
      @blackmercy-il9me 8 месяцев назад

      @@maratmkhitaryan9723написать юнит тесты на каждую функцию, сделать дебаг каждой строчки, написать свой транслятор языка в cpp

  • @zede1697
    @zede1697 8 месяцев назад +177

    Мурыч в кровати перевернулся

    • @niktaylor5065
      @niktaylor5065 8 месяцев назад +2

      Шо за Мурыч ?

    • @user-qe9kw5cp3d
      @user-qe9kw5cp3d 8 месяцев назад +8

      ​@@niktaylor5065Demi Murych - легенда русскоязысного js

    • @user-fw3jj1pl3h
      @user-fw3jj1pl3h 8 месяцев назад +4

      ​@@user-qe9kw5cp3d Мурыч украинец

    • @oleksiibuheria932
      @oleksiibuheria932 8 месяцев назад +13

      Но он хотя бы спецификацию читал

    • @sergeykadantsev9217
      @sergeykadantsev9217 8 месяцев назад +13

      И проборматал что то про мистера промиса и ретроградного ретюрна.

  • @dannycyberwalker
    @dannycyberwalker 8 месяцев назад +25

    Минуточку, видео сделано по СПЕЦИФИКАЦИИ?

  • @user-xk2lb2ob8p
    @user-xk2lb2ob8p 8 месяцев назад +44

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

  • @kelliteshim163
    @kelliteshim163 8 месяцев назад +26

    Как и просил: Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?

  • @CoppaChoppa
    @CoppaChoppa 8 месяцев назад +15

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

    • @Watozarato
      @Watozarato 6 месяцев назад +1

      По сути так и есть
      Либо данные, либо ссылка на объект

  • @user-dd7lb6me7x
    @user-dd7lb6me7x 8 месяцев назад +74

    Хорошо бы теперь получить полный гайд на функции.

    • @bbbbbbb61
      @bbbbbbb61 8 месяцев назад +2

      на методы, он же не функциональщик)

    • @pavel9609
      @pavel9609 8 месяцев назад +3

      @@bbbbbbb61 нууу не только в функциональных языках есть функции.Это в ООП методы. Методами принято называть только функции, которые в классах
      А в некоторых языках есть ... ... процедуры!!!

    • @qubi8592
      @qubi8592 8 месяцев назад +2

      @@bbbbbbb61, функция это подпрограмма, а метод это функция, принадлежащая классу или его экземпляру.
      Функция:
      foo(args);
      Метод
      object.foo(args);

    • @zp4355
      @zp4355 8 месяцев назад

      ​@@qubi8592А зачем ты это написал?

    • @gemellimusic931
      @gemellimusic931 8 месяцев назад

      Процедура не возвращает значений в отличии от функций и методов

  • @gunnargunaxe
    @gunnargunaxe 8 месяцев назад +6

    Ага. И поэтому придумали указатели чтоб менять значение переменной из любой жопы, а не просто копировать в эту жопу значение это самой переменной.
    И теперь любой умник вставляет указатель в любую жопу не задумываясь как оно будет работать с другими жопами. Благо умные люди придумали Большую Жопу под названием операционная система, чтобы жопы поменьше не тянули свои грязные лапки к сокровенным данным, а если и потянут, то большая жопа с разворота выдаёт жопе поменьше хлёский Segmentatin Fault.

  • @ZDenis777
    @ZDenis777 8 месяцев назад +9

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

  • @sofrin6079
    @sofrin6079 8 месяцев назад +39

    Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?

    • @ДокторМёбиус-з2е
      @ДокторМёбиус-з2е 8 месяцев назад +3

      Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?

    • @Mahallis
      @Mahallis 8 месяцев назад

      Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?@@ДокторМёбиус-з2е

    • @lanseris9160
      @lanseris9160 8 месяцев назад +2

      Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?

    • @nixarion
      @nixarion 8 месяцев назад +1

      Я знал, что кто-то додумается это написать

    • @isidisiz8075
      @isidisiz8075 8 месяцев назад

      Это пишут уже годами и стало копипастой@@nixarion

  • @mr_coif5418
    @mr_coif5418 8 месяцев назад +42

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

    • @arseniyrulinskiy2581
      @arseniyrulinskiy2581 8 месяцев назад +15

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

    • @rarem-ws8rf
      @rarem-ws8rf 8 месяцев назад

      ​@@arseniyrulinskiy2581 ирония и как ее понимать

    • @ShardsOfArmor
      @ShardsOfArmor 8 месяцев назад +1

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

    • @sursley
      @sursley 8 месяцев назад

      @@arseniyrulinskiy2581согласен, полная хуета

    • @ypohut1673
      @ypohut1673 7 месяцев назад

      ​@@ShardsOfArmor на пайтоне их писал?

  • @arturlebedjko9369
    @arturlebedjko9369 8 месяцев назад +5

    Просто обязан был это сделать - "Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?""

  • @seregga3936
    @seregga3936 8 месяцев назад +8

    Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще? Давайте пока!

  • @Empty_Vima
    @Empty_Vima 7 месяцев назад +7

    Hey, buddy, great job, keep it up! The content is awesome, can we have more of it? You're really doing great! Is it possible to have more of this more often?😎👍❤

  • @NotAStoryteller
    @NotAStoryteller 8 месяцев назад +9

    Тема раскрыта, в основном, для высокоуровневых языков с управляемой памятью. В языках на подобие Си и С++ всё несколько иначе:
    1. Переменная может располагаться не только в куче, на стеке или в статической памяти. Тогда у неё совсем другой жизненный цикл и другая логика освобождения памяти.
    2. В языках с неуправляемой памятью, где доступна арифметика указателей, возможно создание алиасов. То есть разных переменных, которые физически хранятся в одном участке памяти. Самое забавное, что алиасы могут быть даже разного типа данных. То есть один и тот же набор байтов будет интерпретироваться по разному, в зависимости от того, через какую переменную Вы к нему обратитесь.
    3. Не раскрыта тема умных указателей в языках с неуправляемой памятью.
    ПС: Рекомендую автору собрать замечания к видео и выпустить новый видос, который будет раскрывать тему переменных, в основном, в более низкоуровневых языках.

    • @user-nc9sl2wv5r
      @user-nc9sl2wv5r 7 месяцев назад +1

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

    • @sxda-vadas4903
      @sxda-vadas4903 7 месяцев назад

      не шарю как все работает в плюсах так что возможно вопрос конченный, но разве создание алиасов невозможно, например, в джаваскрипте? условно const a = { val: "val" }; const b = a; создаст два указателя на один объект { val: "val" }, то же самое работает при передаче параметром в функцию, и, насколько я понимаю, все то же самое верно для примитивных типов

    • @NotAStoryteller
      @NotAStoryteller 7 месяцев назад

      @@sxda-vadas4903, это если объект. На примитив, например, так нельзя. А всё из-за того, что в Java нельзя произвольно манипулировать указателями. А в Си и С++ можно сделать именно алиас переменной. Пофигу что в ней: объект, примитив, массив.

    • @NotAStoryteller
      @NotAStoryteller 7 месяцев назад

      @@sxda-vadas4903 , т.е. в Си Вы можете сделать массив из 4-х байт, который является алиасом переменной типа int.

    • @O1dCo1d
      @O1dCo1d 7 месяцев назад

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

  • @Vuda80
    @Vuda80 8 месяцев назад +7

    Контент в кайф! Можно побольше всего такого?)

  • @user-lh5ob2fq1l
    @user-lh5ob2fq1l 6 месяцев назад

    Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?

  • @user-tr6lb9xo3n
    @user-tr6lb9xo3n 8 месяцев назад +2

    Братан, хорош, давай, давай, вперед! Контент в кайф, можно еще? Вообще красавчик!

  • @igorpulemetov4685
    @igorpulemetov4685 8 месяцев назад

    Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Воопбще красавчик!
    Можно вот этого вот почаще?

  • @xaker2014
    @xaker2014 8 месяцев назад +15

    На самом деле не все так просто с этими переменными:
    они могут быть выделены на стеке, на хипе, в регистре, в DMA, в сегменте кода, данных; а если еще взглянуть на Гарвардскую архитектуру там еще веселее.
    То, что вы напишете в вашем js буть то: var, let, const (или что там есть) никогда не угадаете где в итоге окажется ваша переменная.

    • @shortscute7857
      @shortscute7857 8 месяцев назад

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

    • @O1dCo1d
      @O1dCo1d 7 месяцев назад

      Так автор это же и сказал на 4:02

  • @user-sz5mj1mi7g
    @user-sz5mj1mi7g 8 месяцев назад +3

    Для компиляторов переменная это лишь значение в области памяти а её тип лишь объясняет как строить обращение с этой областью памяти в скомпилированной программе

  • @vlados_zaytcev
    @vlados_zaytcev 8 месяцев назад +1

    Братан, хорош, давай-давай вперед, контент в кайф, можно ещё, вообще красавчик!

  • @ivanpoberezhniuk9694
    @ivanpoberezhniuk9694 5 месяцев назад

    Братан, хорош, давай, давай вперед! Контент в кайф, можно ещё? Воообще красавчик! Можно вот этого вот почаще?

  • @МусинВася
    @МусинВася 8 месяцев назад +2

    До чего мы докатились.....
    Гайды по пременным

  • @exception05
    @exception05 8 месяцев назад +4

    Помню с товарищем сравнивали как в разных компиляторах на C++ разных версий в дизассемблере выглядит код простого цикла со счётчиком. Вот в более старых компиляторах переменные, объявленные для счётчика попадают в оперативную память, а в более новых и современных компиляторах - в аппаратный стэк процессора. Не знаю, насчёт "записи в ПЗУ", но как немного знакомый с ACPI кодингом и видевший в глаза функцию Store, то на более машинном уровне действительно нет проблем размещать переменные в разных аппаратных устройствах, позволяющие это делать на уровне прошивки и уровня операционной системы. Просто адрес должен попадать адресное пространство будет в область конкретного девайса, куда эта память размещается и учитывать, что на аппаратном уровне есть свои фишки, вроде рандомизации размещения, свои особые карты памяти. В целом, чтобы узнать, где будет размещена та или иная переменная раньше других это в идеале бы изучать ACPI и его изменения в новых чипсетах, а потом искать в бэклоге какого-нибудь компилятора, когда они добавят возможность размещать переменную, кодируя её в частоту вращения корпусных вентиляторов или цветов вашей RGB-подсветки. Ну или хотя бы просто в NVRAM.

    • @jusie
      @jusie 8 месяцев назад +1

      > для счётчика попадают в оперативную память, а в более новых и современных компиляторах - в стек
      Как будто стек это не оперативная память)

    • @bitlight7389
      @bitlight7389 8 месяцев назад

      Простите, а где тогда хранится стек?

    • @EgorFrade
      @EgorFrade 8 месяцев назад

      Ты наверное имел ввиду хип, когда говорил про "оперативную память" но я в этом сильно сомневаюсь (по крайней мере для простого цикла), На arm архитектуре, кстати, компилятор любит счетчик в регистрах проца хранить (там их просто больше чем на x86, amd64).
      (Добавлено) Хотя если компилятор для каких нибудь embedded девайсов типа ардуинки то поверю, там прямая адресация памяти и нет затраты на аллокации хипа.

    • @exception05
      @exception05 8 месяцев назад +2

      Я уточнил. Я имел ввиду аппаратный стэк процессора, чтоб понятно было.

    • @user-ry5oh3qt2u
      @user-ry5oh3qt2u 8 месяцев назад

      ACPI тут при чем? Это же просто режимы сна компа

  • @The_Yoshi
    @The_Yoshi 4 месяца назад

    Братан хорош, контент и кайф давай давай ещё 🎉

  • @АбвгдежзОпрстуфх
    @АбвгдежзОпрстуфх 6 месяцев назад +1

    И всё же переменные в математике и программировании - одно и то же. Если идти по пунктам автора, то 1) ссылаемость переменной в программировании - не её суть, а необходимое условие существования, так что аргумент несостоятелен; 2) переменные не являются частью формулы или уравнения, но всё равно является частью какой-то функции. Но даже при этом использование переменной не обязательно ни в математике, ни в программировании; 3) как в коде переменную можно назвать одной латинской буквой, так и в математике никто не запрещает использовать для именования слово. К примеру многие в рассчётах используют "КПД" вместо ню. Ну а если идти не по пунктам автора, а по сути такого явления как переменные, то и математика, и программирование являются лишь частным случаем их реализации и использования.

  • @mamont0207
    @mamont0207 8 месяцев назад +3

    Что значит переменные в программировании не являются частью формул? Если одна переменная участвует в вычислении отчества хейтеров этого канала, а другая - в сравнении оного с паспортным значением, то это такие же формулы как и волновая функция Шредингера. Разница скорее в стандарте записи. В программировании формулы обычно записываются с целью оптимизации времени выполнения, а «алфавит» строго ограничен операциями, доступными процессору. В математике формула подчиняется принципам необходимости и достаточности, а также универсальности (математическая формула должна быть максимально удобна для математических преобразований совместно с другими формулами), а алфавит обычно подстраивается. Если формально, то логика первого порядка (на которой строится и вся математика) полна по Тьюрингу. Более того, сама машина Тьюринга является математической моделью. Потому можно сказать что переменная в программировании является частным случаем переменной в математике

    • @torburgmax
      @torburgmax 8 месяцев назад

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

    • @mamont0207
      @mamont0207 8 месяцев назад

      @@torburgmax переменная - математический объект, который может принимать множество значений в пределах множества возможных значений или области изменения. S=pi*r2 - тут r и S - переменные, pi - константа

    • @torburgmax
      @torburgmax 8 месяцев назад

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

    • @mamont0207
      @mamont0207 8 месяцев назад

      @@torburgmax формула S=pi*r2 показывает связь между S и r. Для всех S и r. Если у вас есть задача, в которой дано r, то да, в рамках задачи это константа. А если задача представлена неравенством? А если это дифур? В математике есть раздел «численные методы», который занимается численными решениями, они прям оперируют алгоритмами. Условное вычисление интеграла методом трапеций или метод Эйлера - это математика. Тем не менее, они выглядят как алгоритм, и ложатся на программный код аж бегом

    • @nixhalla3uk27
      @nixhalla3uk27 17 дней назад

      @@mamont0207 разница лишь в том, что все переменные в математике представляют собой тип double или decimal. В тоже время переменная может хранить в себе сложные структуры, например объект с целом перечнем свойст, методов и прочих наборов. Да и запросы LINQ например, ты как в обычную переменную засунешь?

  • @studym1812
    @studym1812 4 месяца назад +1

    Ну так а под копотом то где? Видео - тупо перечисление свойств переменных и то не исчерпывающее... или замечание про то что ячейка памяти может быть выделена и не в операционке и есть "под капотом" ?

  • @narekhovhannisyan6362
    @narekhovhannisyan6362 8 месяцев назад

    Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик!

  • @alexander_sviridov
    @alexander_sviridov 2 месяца назад +1

    Сборщик мусора - это не панацея. Это цирк шапито, где заяц и черепаха бегают по кругу каждый раз. По мимо сборщика и ручного управления памятью есть Reference counting. Он есть в любом уважающем ЯП, и даже в крестах.
    Иммутабельность - это красиво, чисто. Но это медленно. Иногда стоит посмотреть что куда пихаешь, и как используеш. Когда протаскиваешь обьекты через кучу красивых и чистых архтектур.

  • @CBEPXECTECTBEHHOE
    @CBEPXECTECTBEHHOE 8 месяцев назад +1

    Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?
    норм???

  • @zy2bas
    @zy2bas 8 месяцев назад +1

    - посмотрите как это работает
    - показывает работу create-react-app

  • @Vanusagavrusa
    @Vanusagavrusa 7 месяцев назад +1

    Тьюринг в своей машине перевернулся после этого ролика

  • @DarkW1zard
    @DarkW1zard 8 месяцев назад +1

    1:44 начало

  • @user-tq9bu6ki2h
    @user-tq9bu6ki2h 8 месяцев назад +4

    Думаю, в теме небезопасности переменных стоило упомянуть функциональщину -- в Haskell переменных нет вообще.

    • @user-gn5jw9sg9n
      @user-gn5jw9sg9n 8 месяцев назад

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

    • @gamerzero6085
      @gamerzero6085 8 месяцев назад

      @@user-gn5jw9sg9nНе писал многопоточный код на хаскель но интересно. Ты про ref'ы? Разве их "мутация" не просто трансформирует монадный контекст где они объявлены? Я думал всё изменение состояния в хаскеле так или иначе просто производит новую копию "мира" в IO

    • @niksanmaster1
      @niksanmaster1 8 месяцев назад

      @@user-gn5jw9sg9n шарить состояния между потоками? Они там что курят?

    • @user-tk2jy8xr8b
      @user-tk2jy8xr8b 8 месяцев назад

      Там есть переменные в математическом смысле, например `f x = x + 1` параметр x является переменной, т.к. связывание этого имени может происходить с разными значениями.
      На уровне семантики языка переменных в программистском смысле там действительно нет, однако есть мутабельные ячейки данных вроде MVar, MArray, TVar, IOVar и прочего.
      В общем концепция именования там отделена от концепции мутабельной ячейки данных.

    • @smaramna
      @smaramna 8 месяцев назад

      Чёто пролог вспомнился
      Переменные есть, но из-за предикативности языка - работают они не так, как ожидается интуитивно

  • @velis8052
    @velis8052 7 месяцев назад

    Здорова , контент в кайф , давай ещё ещё ! Лабай

  • @antonsimachkov6255
    @antonsimachkov6255 5 месяцев назад

    Контент в кайф, давай еще

  • @yanwhite4961
    @yanwhite4961 8 месяцев назад

    Хорош. Давай вот этого вот почаще

  • @whyspxcyyy
    @whyspxcyyy 8 месяцев назад +1

    Когда же у него уже запустится react app😢

  • @liasteria5677
    @liasteria5677 8 месяцев назад

    да да красавчик, давай вот этого почаще

  • @denisblack9897
    @denisblack9897 8 месяцев назад

    Давай вот этого вот еще! Красавчик! Давай «петухон за 3 минуты»

  • @channelbykosmonavtkosmosa7059
    @channelbykosmonavtkosmosa7059 6 месяцев назад

    Контент в кайф, вообще красавчег, спасибо 💯💥👾👽🤖

  • @dolsha
    @dolsha 8 месяцев назад

    Братан, хорош! Давай вперёд! Контент в кайф! Можно ещё? Ваще красавчик!

  • @alekseyshmykov6522
    @alekseyshmykov6522 8 месяцев назад +1

    ❤вот бы всем такого учителя информатики😂

  • @user-tk2jy8xr8b
    @user-tk2jy8xr8b 8 месяцев назад

    Переменные нужны не для того, чтобы хранить информацию. Они нужны для именования этой информации. Хранить можно без переменных, что прекрасно делают стековые языки, языки с нотацией Де Брауна и всякие point-free вроде J или APL.
    > её утилизирует сборщик мусора
    > ... переменную следует уничтожить вручную
    как насчёт переменных, аллоцированных на стеке или в регистровой памяти?
    > операционная система не сможет выделить память на переменную
    кринге. ОС выделяет память разве что под адресное пространство процесса. Аллокация не имеет никакого отношения к ОС. Исключением можно с натяжкой считать примитивы ОС типа мьютексов или выделение буферов в памяти ядра, но чаще всего это нельзя назвать "выделением памяти на переменную".

  • @losos6069
    @losos6069 8 месяцев назад +4

    Одна из важнейших вещей то что память под значение переменной может быть выделена на стеке или на куче. Почему автор про это не упомянул в видео не понятно. При этом было упомянуто про gc

    • @user-pm4we9lr9q
      @user-pm4we9lr9q 8 месяцев назад

      Потому, что при большинстве нынешних средств программирования в принципе похуй где там эти переменные хранятся / уровень абстракции

    • @maxrusspb
      @maxrusspb 8 месяцев назад

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

    • @mr.Ponizovsky
      @mr.Ponizovsky 8 месяцев назад

      А потом пользователи страдают, когда у них простейшие программы "лагают".

    • @maxrusspb
      @maxrusspb 8 месяцев назад

      ​@@user-pm4we9lr9qбоюсь, что при таком подходе вашим самым главным средством будет отладчик.

    • @user-pm4we9lr9q
      @user-pm4we9lr9q 8 месяцев назад

      @@maxrusspb да, особенно, в интерпретируемых ЯП

  • @antonmiras9188
    @antonmiras9188 8 месяцев назад

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

  • @vorobey_toha4776
    @vorobey_toha4776 8 месяцев назад

    Воу, кратко, четко, интересно 👍🏻

  • @ukrainetoday960
    @ukrainetoday960 8 месяцев назад +1

    2:09 Видео явно делал джун. Программист не работает с информацией, программист создает структуры которые работают с информацией.

    • @user-tk2jy8xr8b
      @user-tk2jy8xr8b 8 месяцев назад

      Эти структуры - тоже информация, так что программист работает с информацией, шах и мат
      По поводу джуна спорить не буду :D

    • @ukrainetoday960
      @ukrainetoday960 8 месяцев назад

      ​@@user-tk2jy8xr8b
      > Эти структуры - тоже информация, так что программист работает с информацией, шах и мат
      Эти структуры - больше чем информация, хотя они тоже информационные объекты - это инструкции, команды и их комбинация - архитектура. )

  • @CoBaldr
    @CoBaldr 8 месяцев назад +1

    На микроконтроллерах не потому что памяти мало а потому что там как правило flat memory, и никских защищенных режимов

  • @user-xi8to7ip5o
    @user-xi8to7ip5o 8 месяцев назад

    Константы это частный случай переменных.

  • @AquaDiskoteque
    @AquaDiskoteque 8 месяцев назад

    Если, что для меня стало открытием, что когда кастомный скрипт делаешь в GTM, то гугл таг менеджер работает с переменными только var. let там не прокатит видимо для бОльшей совместимости

  • @mikhalpalych
    @mikhalpalych 8 месяцев назад

    6:43 на уровне идеи

  • @blood_magician
    @blood_magician 8 месяцев назад

    Братан хорош, давай почаще

  • @georgyg.6275
    @georgyg.6275 8 месяцев назад

    контент в кайф и далее по тексту ))))

  • @antonmiras9188
    @antonmiras9188 8 месяцев назад

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

  • @ЮрийБелов-о5ю
    @ЮрийБелов-о5ю 8 месяцев назад

    Я точно помню, что до этого было 2 видео с функциональным контекстом, но что то не могу найти первое... Эффект Манделы?
    Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?

  • @nikitasinsobaki
    @nikitasinsobaki 8 месяцев назад

    Я всё это знал, но для новичков думаю видос полезный так-что спасибо!

  • @SuperGoyda
    @SuperGoyda 8 месяцев назад

    Давай еще, красавчик!

  • @leomysky
    @leomysky 8 месяцев назад +2

    Видео на канале стали выходить чаще, и это не может не радовать.

  • @carnero_mds
    @carnero_mds 7 месяцев назад

    Братан, хорош, давай-давай вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого почаще?
    Давай пока

  • @Mguitarrr
    @Mguitarrr 8 месяцев назад

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

  • @AntiVIRUZ2
    @AntiVIRUZ2 7 месяцев назад

    Эх, не рассказали про области видимости и создания значения на куче/стеке

  • @user-xv4lp5km7c
    @user-xv4lp5km7c 8 месяцев назад

    Братан, хорош! Контент в кайф!

  • @ilyalitovchenko6545
    @ilyalitovchenko6545 8 месяцев назад

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

  • @Ivan-xf7fg
    @Ivan-xf7fg 8 месяцев назад

    опять отличное видео полностью лишенное смысла, спасибо !!!

  • @TheAgressor13
    @TheAgressor13 8 месяцев назад

    кайф давай почаще

  • @giper4403
    @giper4403 8 месяцев назад

    Занятненько))

  • @zeronim1965
    @zeronim1965 8 месяцев назад

    Чёт как-то странно... Всегда считал что переменную объявлять вместе со значением не обязательно, значение ей можно присвоить по ходу выполнения кода.
    Смысл переменной если по ходу кода/программы она не меняется, может действительно проще подобное объявить константой? (К теме var_copy).
    Я не программист, но имхо странно что у программиста вопросы к тому что переменная меняется по мере выполнения кода... Значит так код написан, меняем руки.

  • @Dargxegoddt
    @Dargxegoddt 8 месяцев назад

    Братан давай давай вперед контент вообще кайф давай еще

  • @user-yf5zn9us5z
    @user-yf5zn9us5z 8 месяцев назад

    Не развернуто. Имена переменных в компилируемых языках в машинные кода не существуют. Для типизированных статичных переменных выделяется кусок памяти и ее адрес. Обращение по адресу, название переменной нигде не хранится.
    Для динамических переменных память выделяется в куче. Для статичных переменных функции в стеке. И везде это всего лишь адреса, а не названия. Статику невозможно освободить, а вот динамику освобождай сам.
    А вот для нетипизированных все намного сложнее. Там не адрес переменной, а адрес функции, которая делает вид, что она переменная и возвращает или изменяет значение. Программист не может определить -- он берет простую переменную или ту, которая обвязана {get; set;}.
    Еще все хуже с байт-кодом. Там вообще поднимается виртуальная машина исполнения кода и т.д. И там и названия переменных вполне могут встречаться, т.е. работа не напрямую с памятью, а со структурами.
    Интерпретируемые языки -- эти вообще динамическая структура, помесь байт-кода и костылей.

  • @DimmON22
    @DimmON22 8 месяцев назад

    Братан Хорош ваше контент в кайф. можно еще вот это вот по больше

  • @nikolaidroid
    @nikolaidroid 8 месяцев назад

    Такое надо в начальной школе показывать, неиронично комплиментарный комментарий

  • @nikitasidorin
    @nikitasidorin 8 месяцев назад +1

    Тема не раскрыта

  • @valsal6674
    @valsal6674 8 месяцев назад

    Итак, сейчас я вам расскажу как работают переменные!
    1. Где хранятся переменные? - А хрен его знает)

  • @alexeyyarov7472
    @alexeyyarov7472 8 месяцев назад

    Контент топ, теперь буду писать через копию. Автор молодец

  • @carnero_mds
    @carnero_mds 7 месяцев назад

    О, наконец-то голос текста и концовки сошёлся

  • @EviilMalkavian
    @EviilMalkavian 8 месяцев назад

    Ну и если я какой-то текст дочитываю до конца, то никогда не поленюсь поставить лайк и в комменте написать что-то типа: "Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?"

  • @Sonichec0
    @Sonichec0 8 месяцев назад

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

  • @stasit07
    @stasit07 8 месяцев назад

    Вообще красавчик

  • @Apofize
    @Apofize 8 месяцев назад

    Да давай ещё раз

  • @mikeshilovski1512
    @mikeshilovski1512 8 месяцев назад

    Братан харош, контент в кайф

  • @raf1276
    @raf1276 8 месяцев назад

    Молодые люди, минуточку...

  • @maxkalinin2246
    @maxkalinin2246 8 месяцев назад

    Братан, вообще красавчик, и вот это вот всё...

  • @chorny33
    @chorny33 8 месяцев назад

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

  • @SteelDevilReal
    @SteelDevilReal 8 месяцев назад

    Неужели контент по кодингу, не прошло и сто лет

  • @user-gy8xn4kt7s
    @user-gy8xn4kt7s 8 месяцев назад +2

    Вывод, если тебе всё равно на переменные, то это правильно, потому что это не имеет значения и компилятор сам всё порешает
    Касаемо var, я пишу на GDScript всегда по возможности с уточнением типа, потому что так проще понять код

    • @crazy-man
      @crazy-man 8 месяцев назад

      только работы на gdscript нету проблема интересный движек годот

    • @HelloWorld-ln5cy
      @HelloWorld-ln5cy 8 месяцев назад

      Не оптимальней писать скрипты и игровую логику на c# ?

    • @user-gy8xn4kt7s
      @user-gy8xn4kt7s 8 месяцев назад

      @@crazy-man
      Да, тут только самим объединяться и делать игры

    • @user-gy8xn4kt7s
      @user-gy8xn4kt7s 8 месяцев назад

      @@HelloWorld-ln5cy
      В документации написано, что гдскрипт быстрый, по опыту скажу, что медленный он только при работе с большими массивами, которые надо часто обновлять.
      Во всём остальном его достаточно для любых 2д игр и даже для 3д игр.
      Я лично считаю, что к годоту следует относится как к инструменту и отбросить идею оптимизации, да переключиться исключительно на создание игр или ПО на нём, такое тоже можно, ибо он кроссплатформенный. И уже только после создания игры посмотреть где можно срезать углы, иначе кучу времени потратишь на улучательство того, чего не было смысла делать.
      Например, очевидно, что квадродерево на годоте не будет таким же быстрым как и на С++, но его более чем достаточно будет для некой игры на таком вот языке.

    • @gamerzero6085
      @gamerzero6085 8 месяцев назад

      @@user-gy8xn4kt7sДругое дело что на мой взгляд gdscript неполноценен по сравнению с C#, и код на C# может быть более выразителен и красив что позволит дольше над ним работать без затруднений.

  • @user-KAOrlov
    @user-KAOrlov 8 месяцев назад

    Спасибо. Молодец!

  • @darkwarglex
    @darkwarglex 8 месяцев назад

    Шедевр😂😂😂😂😂

  • @Shadow_Dubina
    @Shadow_Dubina 8 месяцев назад

    Шапка от мира it?

  • @nixarion
    @nixarion 8 месяцев назад

    Я наоборот всегда думал, что копирование переменных для каждого участка кода это костыли

  • @AB-ex4iu
    @AB-ex4iu 8 месяцев назад

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

  • @rustykz7708
    @rustykz7708 8 месяцев назад

    Чето думал, что это видео от автора, которому надоели незасчитанные из-за оффсайда голы в футболе

  • @kai3341
    @kai3341 8 месяцев назад

    Ща придёт Мурыч и скажет, что ты неправильно понимаешь переменные. А если серьёзно, то закончил ты нескольно внезапно, оставив ощущение недосказанности. Хотя бы стэк и кучу можно было упомянуть, а ещё стоило регистры упомянуть (ты коснулся темы, но мало)
    Можно продолжить про иммутабельность и как её понимают особенно JS-ники -- дай дурню х%р стеклянный
    Можно упороться в проблемы сишников и безопасную работу с памятью и геморрой -- уязвимости, утечки памяти и прочие радости
    Можно наоборот подняться наверх в высокоуровневые языки (JS) -- но тут ты сам знаешь, чем кончится

  • @saxyboi
    @saxyboi 8 месяцев назад

    Отличное добивание и закрепление базы

  • @dmitriish.350
    @dmitriish.350 8 месяцев назад

    Не увидел ссылку на спецификацию, поэтому не считается

  • @weily1881
    @weily1881 8 месяцев назад

    Дадова! Будет ли видос про асинхронное программирование?