Как стать автором
Обновить

Комментарии 42

Переменных нет (затем описывает переменные)

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

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

в целом я и хотел донести, что переменных нет (можно сказать это , в контексте js например - есть идентификаторы как уже ранее описал.

и даже привел пример где mdn ошиблась в формулировке:D

"""JavaScript, который содержит большой и мутный список абстракций поверх элегантной"""
тут у вас верно подмечено:D

это именованная область в памяти с адресами и все такое. Не понимание этого вы дальше описываете как магию которую придумали какие-то ИТ гиганты. Дальше не стал читать, извините.

это определение взятое из открытых источник а не придуманное мною лично:D

"""это именованная область в памяти с адресами"""

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

Дак люди и называют одно и тоже разными словами, из-за не знания того о чем говорят

это и пытаюсь донести :D

В языках таких как C, C++, JavaScript понятия переменной НЕ СУЩЕСТВУЕТ от природы!
Если вы окунетесь в англоязычный официальный стандарт каждого языка программирования (ну например те что я перечислил выше), то там понятия переменной не упоминается.

В стандарте C++ слово variable встречается порядка 500 раз и используется во вполне привычном контексте. На уровне языка, что описывается стандартами, эти сущности и существуют.

упростив то, что упрощать никак нельзя.

Почему нельзя? Это как-то критически влияет на использование языка?

1+2 = 4 - это будет для вас критично?
мне проще когда все соответствует спецификации типа)) как по мне это очевидно))

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

Ничего не имею против желания поделиться свежим открытием, но подача выглядит так, что тут fun fact пытаются выдать за срывание покровов.

Не верный пример.... перменная в программировании, это как точка в геометрии ... вот Вы знаете определение точки?

а что сложного дать определение точки :D
ну точка условно - это простейший элемент, который обозначает положение в пространстве (задаваемое через координаты) и при этом точка не имеет размеры еще.

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

C++ тоже не существует. Как и C и JavaScript. Это всё иллюзия.

А вот серсо существует. Потому что это слово есть в словаре русского языка.

причем тут это)
больше уклон что понятие переменной нет)

В большей степени ориентировал статью на JS, но и к языкам C/C++ тоже имеет отношение. "переменные" — это условность и в каком-то абсолютном смысле их нет — то есть это просто абстракция.

(например в C++ переменная определяется как "именованный объект или ссылка" (named object or reference). - можете сами посмотреть в доке)

Погодите-ка. Если Вы про JS, давайте про JS.

В языках таких как C, C++, JavaScript понятия переменной НЕ СУЩЕСТВУЕТ от природы!

Открываем стандарт ECMA-262 (ссылка), и что мы читаем в разделе " 14.3 Declarations and the Variable Statement":

let and const declarations define variables that are scoped to the running execution context's LexicalEnvironment

Слово "variable" однозначно переводится на русский как "переменная".

Такое ощущение что ты выцепал заголовок и не углублялся туда:D
Ты цитируешь 'variables' из ECMA-262, но сам стандарт показывает, что это условный термин. Реально там BindingIdentifier и привязки (ResolveBinding, InitializeReferencedBinding) в лексической среде. Еще раз 'Variable' — это абстракция, а не сущность. И в JS идентификаторы как уже ранее писал. Если нужно могу подробно аргументировать)

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

P.S. мы с Вами на "ты" не переходили

оно существует как абстракция лишь

myShiningVar dd 1234abcdh

ну если вы имели это пример переменной - то увы нет)
это же по факту метка на указывающая на определенный участок памяти

то есть dd - если я правильно помню 4 байта
то есть выделяется 4 байта

Переменная это и есть – определенный участок RAM памяти.

Другие переменные не существуют в принципе. Правда, некоторые переменные не меняются, но это нормально. Иногда их называют константами. Но это так, в переносном смысле. А реальная константа, это определенный участок ROM памяти.

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

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

Вы правильно заметили, что понятие переменной в стандартах некоторых языков не определено (хотя используется). Но это скорее недостаток указанных документов, чем отсутствие понятия в компьютерной науке.

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

То, о чём вы дальше пишете в статье (как фактически работает транслятор, про IdentifierReference и т.д.) – это операционная семантика языка. А переменная – это понятие денотационной семантики, оно не связано с конкретной реализацией. Можно писать программы на бумажке с использованием переменных. А вот IdentifierReference потеряет смысл для программы на бумажке, для которой нет транслятора.

ну как абстракция да

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

опять же причем тут это?
речь идет в данной статье только про переменные как бы:D

Да при том, что это просто бессмысленно. Всë, что вы сделали - это взяли одну абстракцию из другой абстракции (языка программирования) под которой ещë куча абстракций до уровня электричества, и сказали "вот, это абстракция!" Так почему ваши замечательные капитанские способности остановились на уровне абстракции, которая чуть ниже, т.е. спеки? В следующей статье вы напишете, что IdentifierReference это всë заговор и его тоже не существует на уровне железа? А потом ещë по тому же принципу с уровня железа до электричества.

В общем удивляться абстракции на самом высоком уровне абстракции - это да, прикольно. А игнорировать сам смысл всей этой абстракции (уже тошнит от этого слова), то, что в конечном счëте она из себя представляет - это... Хотя, если вы первый день живëте на Земле, то может и норм, но скорее вы просто решили блеснуть тем, что открыли спеку, и условно, сказали нам, что лилового цвета оказывается нету, т.к.наш глаз воспринимает несколько цветов, а всë остальное - это смешение. Вот это прорыв!(сказал дальтоник)

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

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

Все по существу в целом!

@andrei777777, я в 2017 году про это рассказывал на Python Junior Meetup. И, если посмотреть на комментарии к видео, то можно увидеть, что гостям и зрителям очень не понравилось 😂 Сейчас дописываю новый учебник, возможно, в виде книжки получится лучше 😳

спасибо!) хоть кто-то хотя бы написал ))

Какая пустая лекция, прям космический вакуум

а вы приступили к её просмотру уже со скептицизмом или заполучили таковое мнение уже по факту просмотра?

p.s. просто интересно исходное расположение коробочки с вакуумом

По факту. Сколько ангелов поместиться на кончике иглы

Всё строго определяется в формальной семантике языков программирования (где она есть).

Из R7RS:

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации