|
Почему можно не ставить разделитель строк, если одна строка? | ☑ | ||
---|---|---|---|---|
0
1с-кин
19.01.12
✎
16:55
|
Почему можно не ставить точку с запятой (";"), если строка одна?
Если Флаг Тогда Загрузить() КонецЕсли; ведь, по идее, если у ж есть разделитель строки - должен стоять. |
|||
1
mikecool
19.01.12
✎
16:56
|
ставь
|
|||
2
mikecool
19.01.12
✎
16:56
|
+1 сам приучился после косяка с директивами
|
|||
3
1с-кин
19.01.12
✎
17:00
|
(2) в том и дело, что чревато. А 1С разрешает....
|
|||
4
mikecool
19.01.12
✎
17:02
|
(3) почитай описание директив языка чтоли
ничем, кроме ошибок при компиляции(в случае использования #Если и прочая) не чревато и то - если криво расставишь директивы |
|||
5
Feanor
19.01.12
✎
17:02
|
(3) а чем чревато?
|
|||
6
mikecool
19.01.12
✎
17:02
|
и кстате - в цикле так тоже можно делать
|
|||
7
1с-кин
19.01.12
✎
17:09
|
(4) вообще, конец строки ставится для компилятора. Почему здесь не ставится - загадка 1с.
(6) да везде, где по одной строке можно воткнуть |
|||
8
Живой Ископаемый
19.01.12
✎
17:10
|
точка с запятой - это не разделитель строк, а разделитель операторов.. если оператор один, то можно не ставить
|
|||
9
Живой Ископаемый
19.01.12
✎
17:11
|
"Почему здесь не ставится - загадка 1с. " это не загадка 1С это теория компиляторов. в Паскале было тоже самое.
|
|||
10
NS
19.01.12
✎
17:12
|
(7) Не поверишь, но так не только в 1С, но например и в Делфи и т.д.
ибо ";" это не разделитель строк, а (8) |
|||
11
Живой Ископаемый
19.01.12
✎
17:13
|
и только не нужно говорить что КонецЕсли - оператор.. это не оператор, а операторная скобка оператора ЕСЛИ, при чем закрывающая скобка.. внутри этих операторных скобок аж один оператор, было бы их два, пришлось бы разделять точкой с запятой.
|
|||
12
Живой Ископаемый
19.01.12
✎
17:19
|
вообще забавный народ 1Сники...
берется какая-то предпосылка, не проверяется на истинность(точка с запятой - это разделитель строк в языке), на ее основе строятся выводы(нужно в конце каждой строки ставить точку с запятой), ну и случается так, что эти выводы до поры работают(везде более одного оператора, и в конце каждого стоит точка с запятой - аккуратные люди писали, не ленились в конце последней тоже ставить точку с запятой). Что конечно уверяет 1Сника в том что предпосылка была истинной даже без необходимости ее проверки(а верно ли что точка с запятой - разделитель строк?). Потом случается событие, когда вывод не работает (мы видим строку без точки с запятой, и этот код работает) и в этом месте взять бы и проверить изначальную предпосылку, которая конечно ложна - но нет, мы объявляем что это все остальные дураки и не приучены к порядку. |
|||
13
1с-кин
19.01.12
✎
17:25
|
(12) вообще, если это разделитель операторов - зачем? компиляцию можно успешно проводить по анализу листинга.
|
|||
14
Fish
19.01.12
✎
17:26
|
(12) Всё гораздо проще. Просто есть программисты, у которых таких вопросов не возникают, а есть куча народу, которые максимум прослушали курсы 1С, и мнят себя при этом настоящими программистами, и пытаются умничать, не понимая даже, какую ересь несут :)))
|
|||
15
1с-кин
19.01.12
✎
17:29
|
мну себя прослушавшим курсы "о просто программистах".
куда копать? |
|||
16
Fish
19.01.12
✎
17:29
|
(13) Как бы, на это даже нечего ответить. :))) Может прежде чем задавать такие вопросы, почитаешь про компиляторы, трансляторы, интерпретаторы и про то, где и как они используются?
|
|||
17
1с-кин
19.01.12
✎
17:30
|
(16) они вроде везде используются логично во всем - и с документацией? нет? :)
|
|||
18
Живой Ископаемый
19.01.12
✎
17:31
|
2(16) это как раз можно и не читать, если не собираешься быть.. но вот почитать букварь от 1С и убедиться что там написано (8)
|
|||
19
Fish
19.01.12
✎
17:31
|
(17) А ты вообще представляешь себе, как компьютер переводит твои нетленки из (0) в машинные коды, и что, а главное ПОЧЕМУ, при этом происходит?
|
|||
20
Fish
19.01.12
✎
17:32
|
(18) Там не написано ПОЧЕМУ это так, а ТС это видимо и интересует :))
|
|||
21
Живой Ископаемый
19.01.12
✎
17:34
|
а... ну может
|
|||
22
1с-кин
19.01.12
✎
17:34
|
(20) собственно, да :)
(19) как 1с переводит мои нетленки? боюсь даже представить.... там, наверняка, целая Матрица задействована... между делом... |
|||
23
Fish
19.01.12
✎
17:37
|
(22) Да, в двух словах не расскажешь :)))
|
|||
24
Feanor
19.01.12
✎
18:14
|
(23) тсссс... на самом деле компиляторы и интерпретаторы на деревьях растут ))) а потом, когда созревают, отрываются и падают в руки разработчикам, те их компилируют, и вуаля - релиз готов!
|
|||
25
1с-кин
19.01.12
✎
18:15
|
(24) че, 1с именно так и сделал?!
|
|||
26
Feanor
19.01.12
✎
18:16
|
(25) конечно
|
|||
27
Эмбеддер
19.01.12
✎
18:18
|
(0) Зато обидно, что после конецфункции надо обязательно ставить
|
|||
28
Эмбеддер
19.01.12
✎
18:18
|
т.е наоборот :)
|
|||
29
1с-кин
20.01.12
✎
00:03
|
(27) меня это тоже раздражает :)
тут ставь, тут не ставь, а где логика-то? :) |
|||
30
1с-кин
20.01.12
✎
00:04
|
(26) созревший компилятор - в студию! хотим знать, почему там ставь, а тут не ставь!
|
|||
31
BOZKURT
20.01.12
✎
00:11
|
мля, как заип.али энти троли..
|
|||
32
BOZKURT
20.01.12
✎
00:16
|
tot jlby
помогите с языком 7.7 |
|||
33
Сияющий Асинхраль
20.01.12
✎
00:49
|
(0) не поверишь, даже если строк внутри условия десять, перед "конецесли" точку с запятой можно не ставить
|
|||
34
Очкарик
20.01.12
✎
00:53
|
(0) это традиция, перенесенная из 7.7
|
|||
35
Очкарик
20.01.12
✎
00:54
|
(0) потому, что это есть ОДНА исполняемая команда оператора
Если Флаг Тогда Загрузить() Иначе НеЗагружать() КонецЕсли; |
|||
36
DJ Anthon
20.01.12
✎
05:56
|
ставь всегда. без вариантов
|
|||
37
1с-кин
20.01.12
✎
09:25
|
(36) раздражает и отвлекает бессмысленная "многовариантность".
там, где нужно - ничего сделать нельзя, а где с дерева сорвали - так целый куст одного и того же :) |
|||
38
DJ Anthon
20.01.12
✎
09:37
|
(37) точка с запятой позволяется синтаксисом 1С. но чисто для удобства ДАЛЬНЕЙШЕГО редактирования текста (мало ли сколько ты потом еще операторов допишешь) лучше ее ставить и приучить себя. так многое что многовариантно. например, пресловутые метки, которые использовать не рекомендуется только из-за того, что безошибочный код сразу написать невозможно, а дальнейшую правку они усложняют. но ведь они есть ;)
|
|||
39
Эмбеддер
20.01.12
✎
10:57
|
(34) Это еще с паскаля идет, а тот еще откуда-то наверняка взял
|
|||
40
ANikV
20.01.12
✎
11:01
|
А книжку почитать по "теории языков программирования" слабо? Например про семантические диаграммы...
|
|||
41
1с-кин
20.01.12
✎
11:07
|
(39) а как 1с привязана к паскалю??
(40) а про теорию программирования слабо почитать? хотя бы? и сравнить, насколько в 1с реализован накопленный опыт языков? |
|||
42
Jaffar
20.01.12
✎
18:30
|
(37) никто не говорит, что в (0) НУЖНО ставить или не ставить точку с запятой.
МОЖНО ставить, а МОЖНО и не ставить. Выбирать вам. Но "накопленный опыт" (не языков, а предшественников) однозначно говорит, что легче поставить - так проще будет при необходимости дописывать составной оператор внутри операторных скобок Если...КонецЕсли. |
|||
43
aleks-id
20.01.12
✎
18:36
|
в большинстве ЯП после последнего оператора можно не ставить разделитель операторов.
|
|||
44
vmv
20.01.12
✎
18:37
|
давайте уже про лексемы говорить - начнем а азов сборки кода, надо ж добиться, чтобы 1С-к - это звучало гордо)
|
|||
45
vmv
20.01.12
✎
18:38
|
(43) а почему, просветишь?)
|
|||
46
aleks-id
20.01.12
✎
19:05
|
(45) могу только предположить, что сделано это ради экономии. ведь раньше данные писались на перфокарты и прочие маловместительные накопители, где каждый байт был на вес золота...
|
|||
47
EvgeniuXP
20.01.12
✎
19:59
|
мне вот тоже интересно, почему в 7.7 после найти значения в реквизите справочника надо писать в условии сравнения .ТекущийЭлемент(), вот в восьмере так не пишут, т.к. от текущего элемента вообще отказались:
Результат=ОКИН.НайтиПоРеквизиту("Пол","Женский"); Если Результат=0 Тогда Возврат; КонецЕсли; Если Сотрудник.Пол=ОКИН.ТекущийЭлемент() Тогда // Сотрудник.Пол=ОКИН - не работает Сообщить("Это Женщина!"); КонецЕсли; |
|||
48
EvgeniuXP
20.01.12
✎
20:03
|
(47) хотя если в отладчике смотреть, что ОКИН, что ОКИН.ТекущийЭлемент() одинаково выдадут наименование, т.е. это ссылка... но во втором случае получается что позиционируемся на ссылке, а в первом случае - нет, хотя данные можем достать через точку и код и наименование - странно!
|
|||
49
EvgeniuXP
20.01.12
✎
20:18
|
(46) а что толку, если один оператор и после него точка запятой, ну стоит, ну не стоит - компилятор всё равно заканчивает анализ выбранной области... это тоже самое, что ;;;;;;;;;;;;;;;;;; установили, а в итоге всё-равно на выходе получили один оператор.
|
|||
50
Фокусник
20.01.12
✎
20:30
|
(0) нужно ставить обязательно, а то потом следующий программист, чтобы добавить строку после этой, вынужден дорабатывать и эту "недоделанную" :)
|
|||
51
DJ Anthon
20.01.12
✎
21:46
|
(47) потому что клюшках переменная со значением ссылка на объект не есть ссылка на объект. и функция ПустоеЗначение на такой переменной вполне может выдать 1, хотя значение заполнено. если преобразовать в строку, то видно, что у переменной не все заполнено в отличие от ссылки на объект.
(50) ага, и копипаста уже может не сработать. |
|||
52
DJ Anthon
20.01.12
✎
21:47
|
+(47) зато в восьмере пишут .ПолучитьОбъект() ;)
|
|||
53
aleks-id
21.01.12
✎
10:49
|
(49) я имел ввиду исходные тексты модулей. ты пишешь программу в 100к строк. в ней куча процедур и функций. посчитай теперь экономию.
|
|||
54
Jaffar
21.01.12
✎
13:45
|
(46) не совсем так. раньше исходные тексты действительно готовились на перфокартах, и тогда на одной строке (перфокарте) располагался только один оператор (Assembler, Cobol, даже Фокад), что, кстати, при необходимости легко позволяло менять последовательность операторов либо добавлять между ними новые. Да и в Бейсике тоже было принято располагать на 1 строке 1 оператор. Только с появлением C, Pascal тенденция изменилась.
|
|||
55
1с-кин
23.01.12
✎
13:54
|
(43) в большинстве ЯП все-таки есть номер строки...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |