Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   есть ли жизнь без var ? (https://javascript.ru/forum/offtopic/47840-est-li-zhizn-bez-var.html)

Watson-512-GTX 09.06.2014 22:53

есть ли жизнь без var ?
 
<!> философия программирования, третий курс университета ><


организм чувствует некоторый подвох в этом операторе - какой то он не отогональный чтоли
(может ктонибудь мне обяснит что это за зверь такой: и зачем он нужен при возможности динамичного объявления свойств: как и delete зачем нужен если есть сборщик мусора который придуман то для того чтобы не задумываться о добавлении и удалении памяти - короче я подозреваю что как то не всё складно в родном жаваскрипте)

внутри функции он создает локальные переменные которые используемые и видимые только порождающей функцией

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

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

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

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

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

Aetae 10.06.2014 02:18

Жизнеспособен любой говнокод который работает. Но шли бы вы все со своим trueЪ-оопэ из моего няшного javascript'a с прототипом и замыканиями. =\

Короче смотри в сторону компилируемых в javascript языков: coffeescript, typescript, livescript, dart итд. Наверняка что-нить из этой гадости придётся тебе по вкусу.

MallSerg 10.06.2014 11:10

пальцем в небо но по моему это "сишарп головного мозга" =)

Watson-512-GTX 10.06.2014 12:55

я уважаю вашу трепетную любовь к замыканиям и не осуждаю ваш выбор ))

это вопрос из области проектирования языков программирования

здается мне что это дизайн Жавы

то есть на жаваскрипте можно писать как аля на жаве..

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

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

nerv_ 10.06.2014 13:42

пока я вижу только словоблудие

Цитата:

Сообщение от Watson-512-GTX
и можно исключить замыкания локальных переменных из образа мира

нет

Если хочешь писать на языке - пиши. Не надо строить из себя умника и переливать из пустого в порожнее. Согласно тому, что ты написал выше, уровень знаний js - (-1) (минус один).

Aetae, любопытно, что ты будешь делать, когда придет es6 :) Там же будут классы, никакой няшности)

nice_try 10.06.2014 13:49

Цитата:

Сообщение от Watson-512-GTX (Сообщение 315856)
исключить замыкания локальных переменных из образа мира

не пойму, ты пытаешься исключить инкапсуляцию из ооп ?

MallSerg 10.06.2014 13:52

Что то мне подсказывает что под классическим ооп ты подразумеваешь классовые надстройки над С а не Симулу или Смалталк =).

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

>>>На JavaScript писать как аля на жаве..
Да можно так же как и на аля любом другом привычном стиле.
Именно по этому у JS такой низкий порог вхождения.
Можно писать как на бейсике или С или же как на C# и Java.

Имхо: Использование больше одной глобальной переменной в своих скриптах это глупость.

nice_try 10.06.2014 13:59

Цитата:

Сообщение от MallSerg (Сообщение 315866)
Имхо: Использование больше одной глобальной переменной в своих скриптах это глупость.

сколько глобальных переменных выдает jquery?

Watson-512-GTX 10.06.2014 14:06

вы меня не понимать

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

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

MallSerg 10.06.2014 14:07

Цитата:

Сообщение от nice_try (Сообщение 315867)
сколько глобальных переменных выдает jquery?

Без понятия и мне это даже не интересно =) но думаю 2-5 не больше

nice_try 10.06.2014 14:09

Цитата:

Сообщение от MallSerg (Сообщение 315870)
думаю 2-5 не больше

неслыханные глупцы :D

Sweet 10.06.2014 14:29

Цитата:

Сообщение от Watson-512-GTX
delete зачем нужен если есть сборщик мусора

Оператор delete не работает с переменными, а предназначен для удаления свойств объекта:
new function () {
  var foo = "test";
  var isDeleted = delete foo;
  alert([ isDeleted, typeof foo ]);
};

new function () {
  this.foo = "test";
  var isDeleted = delete this.foo;
  alert([ isDeleted, typeof this.foo ]);
};

В остальном добавить нечего.

MallSerg 10.06.2014 14:38

Цитата:

Сообщение от Watson-512-GTX (Сообщение 315869)
вы меня не понимать

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

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

А как тебя понять если ты сам не понимаешь что пытаешься объяснить?

Есть множество языков где нет понятия переменная или функция например
http://ru.wikipedia.org/wiki/Brainfuck

Сами понятия "Локальная переменная", "функция" очень абстрактны (((.
И они сильно различаются в конкретных реализациях в различных языках.
Т.е. функция в JS != функция в С, переменная в JS != переменная в С.

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

Watson-512-GTX 10.06.2014 14:41

дык я предельно просто спрашиваю -

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

вопрос в том - можно ли совсем обойтись без внутренних переменных в жаваскрипте и соответственно без замыканий

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

Watson-512-GTX 10.06.2014 14:44

Цитата:

Сообщение от Sweet (Сообщение 315873)
Оператор delete не работает с переменными, а предназначен для удаления свойств объекта:

переменные в жаваскрипте это всегда свойства объекта
в том числе объекта функции

сборщик мусора придуман для того чтобы не париться о выделении памяти
оператор delete - наверное лишний

MallSerg 10.06.2014 14:46

Цитата:

Сообщение от Watson-512-GTX (Сообщение 315876)
дык я предельно просто спрашиваю -

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

вопрос в том - можно ли совсем обойтись без внутренних переменных в жаваскрипте и соответственно без замыканий

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

Легко просто используй <script></script> только внутри ничего не пиши тогда переменных не будет =).

Watson-512-GTX 10.06.2014 14:52

Цитата:

Сообщение от MallSerg (Сообщение 315878)
Легко просто используй <script></script> только внутри ничего не пиши тогда переменных не будет =).

ты тупой?

MallSerg 10.06.2014 15:05

Цитата:

Сообщение от Watson-512-GTX (Сообщение 315881)
ты тупой?

где тупой? =)
delete - позволяет удалить объект который больше не нужен это позволяет освободить память на компьютере =)
<script>
a = {}
a.memory = "очень много гигов памяти";
alert (a.memory) // память занята =(
delete a.memory
alert (a.memory) // память освобождена =)
</script>

Sweet 10.06.2014 15:08

Цитата:

Сообщение от Watson-512-GTX
можно ли совсем обойтись без внутренних переменных в жаваскрипте и соответственно без замыканий

Можно. Что мешает?
Цитата:

Сообщение от Watson-512-GTX
переменные в жаваскрипте это всегда свойства объекта

Нет, переменные - это всегда переменные, свойства - это всегда свойства, переменные - никогда не свойства. Соответственно, сборщик мусора работает только с переменными, оператор delete - только со свойствами. И их работа никак не пересекается.

Watson-512-GTX 10.06.2014 15:13

для двоишников по теме - habrahabr.ru/post/147890/

Watson-512-GTX 10.06.2014 15:19

Цитата:

Сообщение от Sweet (Сообщение 315888)
Можно. Что мешает?

Нет, переменные - это всегда переменные, свойства - это всегда свойства, переменные - никогда не свойства. Соответственно, сборщик мусора работает только с переменными, оператор delete - только со свойствами. И их работа никак не пересекается.

я офигеваю от твоей тупости!
всё что ты написал в цитате - ересь и бред

глобальный объект имеет свойства которые можно создать так:
this.свойство
или так:
var свойство

- и это по сути одинаковые сущности с разницей только в настройках редактируемости
называй их как угодно - переменные контейнеры
все они это атрибуты-члены одного общего объекта: обращение к которым одинаково: объект.свойство

Watson-512-GTX 10.06.2014 15:23

Цитата:

Сообщение от MallSerg (Сообщение 315887)
где тупой? =)
delete - позволяет удалить объект который больше не нужен это позволяет освободить память на компьютере =)
<script>
a = {}
a.memory = "очень много гигов памяти";
alert (a.memory) // память занята =(
delete a.memory
alert (a.memory) // память освобождена =)
</script>

тупой ты потому что не понимаешь зачем был изобретен сборщик мусора
- "чтобы не париться о выделении и освобождении памяти"

если у тебя по адресу объект.свойство лежит огромный кусок памяти - то ты просто присвой туда "ничего" и не парься
объект.свойство=null

nerv_ 10.06.2014 15:29

Sweet, MallSerg, зачем что-то пытаться объяснять человеку касательно js, если этот человек не знает языка?

На данный момент для меня он просто школьник-тролль. Который, кстати, сейчас заработает свой первый и, судя по всему, не последний минус :)

А для Watson-512-GTX акцентирую внимание, что ответ на его вопрос был дан на первой странице треда

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

А до тех пор, ты просто тролль :)

Watson-512-GTX 10.06.2014 15:31

да ё маё - чо вы такие истерично обидчивые?
как бабы, или как религиозные фанатики

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

nice_try 10.06.2014 15:33

Цитата:

Сообщение от Watson-512-GTX (Сообщение 315907)
с русскими это всегда так было

а ты кто по-национальности?

Sweet 10.06.2014 15:38

Цитата:

Сообщение от Watson-512-GTX
ну тыпые. ну дак с русскими это всегда так было

Ты так говоришь, будто бы быть тупым - это что-то плохое.

Watson-512-GTX, с тобой не интересно общаться - ты слишком быстро скатываешься во "всё, что ты говоришь - ерись и бред; ты - тупой". Это как бэ намекает на твой уровень.

Цитата:

Сообщение от nerv_
зачем что-то пытаться объяснять человеку касательно js, если этот человек не знает языка?

Я сделал попытку, но упёрся в стену непонимания:) Да и х@# с ним!:D

Sweet 10.06.2014 15:49

Цитата:

Сообщение от Watson-512-GTX
Цитата:

Сообщение от Sweet
Можно. Что мешает?

Нет, переменные - это всегда переменные, свойства - это всегда свойства, переменные - никогда не свойства. Соответственно, сборщик мусора работает только с переменными, оператор delete - только со свойствами. И их работа никак не пересекается.

всё что ты написал в цитате - ересь и бред

Готов это признать, если:
1. Ты объяснишь, что мешает полностью отказаться от переменных.
2. Приведёшь пример, где сборщик мусора удаляет свойства объекта.
3. Приведёшь пример, где оператор delete удаляет переменную.

Замечу:
- если не будет хотя бы одного пункта, то ты - пиздобол. Потому как заявляешь, что "всё, что я написал в цитате - ересь и бред"
- пример с глобальным объектом не принимается, потому что является частным случаем.

MallSerg 10.06.2014 16:54

В стандарте явно написано что delete должно удалять только свойство.
Но на практике delete после удаления свойства также пытается удалить и переменную если на нее больше нет ссылок что иногда очень удобно.
Любопытный тест на способы удаления переменных =)))
http://jsperf.com/deleting-variables-in-v8/2

Watson-512-GTX 10.06.2014 17:01

Цитата:

Сообщение от Sweet (Сообщение 315913)
Готов это признать, если:
1. Ты объяснишь, что мешает полностью отказаться от переменных.
2. Приведёшь пример, где сборщик мусора удаляет свойства объекта.
3. Приведёшь пример, где оператор delete удаляет переменную.

ты для начала поясни что такое переменная и свойство в твоем понимании

наверное ты подразумеваешь те что созданы оператором var ?
их не удаляет оператор delete



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

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

это ересь. я осознаю это
просто интересна теоретическая такая возможность

MallSerg 10.06.2014 17:32

На каком языке у тебя есть опыт разработки?

Watson-512-GTX 10.06.2014 17:44

Цитата:

Сообщение от Sweet (Сообщение 315888)
Можно. Что мешает?

- вот: человек кокретно сказал что так можно прожить

я и сам подозреваю что можно, но на всяк вот еще тут у балбесов спрашиваю ))

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

Watson-512-GTX 10.06.2014 17:46

Цитата:

Сообщение от MallSerg (Сообщение 315932)
На каком языке у тебя есть опыт разработки?

ты совсем тупой - я же говорю что третий курс философского университета, какая нафиг работа если я учу основы программирования

что уж нельзя новичку задать вопрос об основах? откуда такая истеричность?

работа стресс ?

понимаю и сочустую

Sweet 10.06.2014 17:51

Watson-512-GTX, как ты ловко слез с конкретики обратно в своё словоблудие. Это всё от недостатка (возможно, полного отсутствия) опыта разработки. И я сейчас не о хеллоуворлдах, лабораторках или недоделанных в школе игр.
Цитата:

Сообщение от Watson-512-GTX
зачем может понадобиться создавать оператором var контейнеры в глобальном объекте ?

В глобальном контексте происходит самый минимум разработки. И ограничивается только объявлением глобальных переменных/свойств aka пространств имен. Всё! В глобальном контексте код пишут только на лабораторках, а не в реальных проектах.
Цитата:

Сообщение от Watson-512-GTX
напрягите фантазию и скажите можно ли так писать программы

А зачем? Я вот уже два раза сказал, что можно, а ты продолжаешь повторять вопрос.
Цитата:

Сообщение от Watson-512-GTX
или же локальные переменные абсолютно необходимы и без них что то невозможно сделать

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

Sweet 10.06.2014 17:56

Цитата:

Сообщение от Watson-512-GTX
я же говорю что третий курс философского университета, какая нафиг работа если я учу основы программирования

А, ну всё понятно.:haha: Тогда объясню филосовски. Чем меньше знаний и опыта, тем проще всё кажется. Потому что видишь только верхушку айсберга.

Watson-512-GTX 10.06.2014 17:58

Цитата:

Сообщение от Sweet (Сообщение 315938)
Watson-512-GTX, как ты ловко слез с конкретики обратно в своё словоблудие. Это всё от недостатка (возможно, полного отсутствия) опыта разработки. И я сейчас не о хеллоуворлдах, лабораторках или недоделанных в школе игр.

В глобальном контексте происходит самый минимум разработки. И ограничивается только объявлением глобальных переменных/свойств aka пространств имен. Всё! В глобальном контексте код пишут только на лабораторках, а не в реальных проектах.
А зачем? Я вот уже два раза сказал, что можно, а ты продолжаешь повторять вопрос.
Ещё раз повторяю. Можно разрабатывать проект любой сложности абсолютно отказавшись от переменных. Но обновременно с этим ты полностью отказываешься от сборщика мусора и всё придется чистить ручками.

полностью согласен

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

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

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

Erolast 10.06.2014 18:01

Цитата:

замыкания это усложнение языка
Вот так внезапно одно из мощнейших средств языка превратилось в его усложнение.

nice_try 10.06.2014 18:06

Цитата:

Сообщение от Sweet (Сообщение 315938)
В глобальном контексте код пишут только на лабораторках, а не в реальных проектах.

я так понимаю vk.com - это чья-то лабораторная работа

Watson-512-GTX 10.06.2014 18:07

Цитата:

Сообщение от Erolast (Сообщение 315943)
Вот так внезапно одно из мощнейших средств языка превратилось в его усложнение.

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

а язык должен быть простым

жаваскрипт позволяет обойтись без этих переподворотов с подвыпердвертом и писать просто - это факт

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

Sweet 10.06.2014 18:24

Цитата:

Сообщение от nice_try
я так понимаю vk.com - это чья-то лабораторная работа

Это типа аргумент какой-то? Или что?

Watson-512-GTX, я не понимаю, к чему ты ведёшь? Javascript такой, какой он есть:

nice_try 10.06.2014 18:35

Цитата:

Сообщение от Sweet (Сообщение 315950)
Это типа аргумент какой-то? Или что?

типа аргумент, можешь глянуть на часть их глобальных переменных и все они сидят в window https://vk.com/js/al/common.js?1101_81

скока поставишь за такую лабораторку?


Часовой пояс GMT +3, время: 07:28.