![]() |
![]() |
![]() |
|
Язык 1С v8: плохо работает Автозавершение? | ☑ | ||
---|---|---|---|---|
0
romix
03.08.04
✎
04:30
|
Имеется в виду контекстная подсказка, доступная по нажатию клавиш Ctrl-Пробел или при вводе точки в текстовом редакторе. Митичкин пишет: «Необходимо учитывать, что область применения контекстной подсказки ограничена: она работает не для всех объектов и не во всех случаях. В перспективе эта технология будет развиваться». Если говорить менее дипломатично, то 1С серьезно отстает в этом отношении от других средств разработки. В чем же дело?
Например, среда разработки Flash MX/Action Script 2.0 содержит встроенный язык, очень похожий на JavaScript (это сделано для завоевания рынка, который к тому моменту уже был занят технологией JavaScript). Среда разработки, конечно же, поддерживает Автозавершение кода. Давайте посмотрим, в чем там отличия от 1С? 1) Строковые функции работают как методы и свойства строковых переменных. Это значит, что напечатав имя строковой переменной и точку, человек получит доступные «через точку» методы и свойства для работы со строками. Например, если str – это переменная, объявленная как строковая, то str.length – ее длина, а str.indexOf(Подстрока) – позиция указанной подстроки. В 1С же эти функции находятся в глобальном контексте (он и без того перегружен), и напоминают «старый добрый» Бейсик на древних ЭВМ. 2) Математические функции доступны через префикс math., например, math.sin() или math.PI. Это улучшает не только читаемость кода (ясно, где математические функции, а где – что-то другое), но и помогает работать Автозавершению. 3) Доступны указатели области видимости this, _parent, _root и _global. Например, напечатав this и точку, человек получит подсказку по всем свойствам и методам текущего объекта. Аналогично для других областей видимости. В 1С нельзя указать явно, где следует искать имя: в контексте системы, одного (какого?) из общих модулей, в модуле прикладного объекта или в текущем модуле. И, соответственно, толком не работает Автозавершение. Вообще говоря, можно сказать, что Автозавершение – хороший индикатор качества собственно языка. Если Автозавершение вываливает 500 ссылок на возможные свойства и методы, то это означает, что каждую из них должен держать в уме и человек. И обратное: если новичок с трудом читает (если читает) код 1С, то не является ли это признаком плохого качества языка? (надо помнить все) |
|||
1
Новичок_в_вер8
03.08.04
✎
04:58
|
Малость опоздамши с замечаниями. Года так на 3(три)
|
|||
2
¶
03.08.04
✎
09:57
|
(0) Дело вкуса, наверное. Мне контекстная подсказка в Одинэсике нравится, считаю ее более удобной, чем в VBA.
Идея сделать примитивные типы классами, а функции работы с ними методами - тоже, наверное, неплоха, хотя и не нова. Растет она, если не ошибаюсь, из SmallTalk, где объектами было абсолютно все. А с чем не согласен - так это вот с чем: "если новичок с трудом читает (если читает) код 1С, то не является ли это признаком плохого качества языка?". Если я с трудом читаю формулы, скажем, теории информации, мне почему-то не хочется обвинить ее математический аппарат в "плохом качестве". |
|||
3
BorisG
03.08.04
✎
10:07
|
(0) И почему ты не Нуралиев? ;-)
Каков смысл данной статьи? Если замечание разработчикам, то уже поздно... поезд ушел... да и для этого надо входить в команду разработчиков... Если пожелание, то его стоит отправить на Хотлайн... но... это не пожелание, и что сделано, то сделано... уже поздно что-то менять... PS: А мыши плакали, кололись, но продолжали жевать кактус. |
|||
4
¶
03.08.04
✎
10:17
|
(3) ИМХО, такая тема все же уместнее, чем обсуждение всяких "ночных дозоров" и "перспектив на футбол".
|
|||
5
Новичок_в_вер8
03.08.04
✎
10:20
|
(4) От таких тем язву заработаешь
|
|||
6
romix
03.08.04
✎
16:46
|
(1) Вообще-то все нормальные программы (тот же flash) обновляют не раз в 7 лет.
Сложностей в таких нововведениях имхо никаких (ну будет версия 8.1 + опция в настройках ИБ). (2) Ну у всех так сделано, джава там и т.д. (3) Обновлять можно по ходу дела. Все языки обновляют - чем 1С плох? |
|||
7
romix
03.08.04
✎
22:01
|
Вообще-то говоря, есть способ сделать достаточно безболезненный переход к измененному синтаксису языка. Это либо директива в исходном тексте, которая показывает ядру, какого стандарта ему следует придерживаться при интерпретации кода, либо настройка в конфигурации. Отличия достаточно поверхностны, и легко делаются простым препроцессированием. Если же фирме 1С это не нужно (мыши пусть колются), то ... ну тогда не знаю. Стандарты 5-летней давности радуют не весь рынок, и особенно не ту его самую денежную часть, на которую они, может быть, расчитывают выйти.
|
|||
8
Волшебник
05.08.04
✎
16:27
|
Я очень рад, что в 8.0 появилась контекстная подсказка. Когда я ее увидел, я сильно порадовался.
|
|||
9
romix
07.08.04
✎
21:16
|
Вообще-то указанная в (0) проблема решается и "вручную", если разработчик
будет достаточно аккуратно проставлять префиксы для всех объявленных имен. Например, всякая функция, объявленная в модуле формы, может иметь префикс мф_, а функция, объявленная в модуле прикладного объекта - мо_. И т.п. Тогда будет лучше работать Автозавершение и код станет понятнее. |
|||
10
BorisG
07.08.04
✎
21:31
|
(9) Видишь ли... префиксы были, потом их отменили. И на это есть вполне конкретное и выраженное мнение разработчиков.
Ответ есть в конференции по восьмерке. Посему смысл твоих постов не вижу. Для этого либо надо тесно работать с разработчиками, либо переваривать кактус какой он есть. Что толку обсуждать вопрос, по которому уже принято решение? |
|||
11
vet
07.08.04
✎
21:40
|
(9)Прав.
Тем более что так всетаки лучше чем ваще без ничего! |
|||
12
BorisG
07.08.04
✎
21:52
|
(11) Ну и... что толку? Если мнение разработчиков другое?
|
|||
13
IAm
07.08.04
✎
21:58
|
Просто есть порода людей, которые всегда чем-то недовольны, то есть отсутствие вордкомплита в 7.7 автора не трогает, а незначительные недостатки в 8.0 вызывают истерику.
|
|||
14
Тот
07.08.04
✎
23:17
|
На самом деле создание систем и интерфйсов - это один огромный компромисс. К сожалению, задаром ничего не бывает. Нет ничего "абсолютно лучшего". То, что 1С "отстаёт" - совершенно очевидно и понятно. Поскольку 1С - это не только среда программирования, приоритеты не могут быть расставлены как так же, как в продуктах, создаваемых имеено для этих целей.
В брошюре "Архитектура 1С:Предприятия" разработчики прямо пишут, что стремились изо всех сил уменьшить количество типов объектов, их свойств, методов и т.п. Именно исходя из того, чтобы поменьше надо было знать-понимать... 10. Что значит "Отменили префиксы"? Если нравится - никто же не запрещает... Другое дело - префиксация тоже не идеал. Сочли, что не нужна и не используют в типовых... |
|||
15
BorisG
08.08.04
✎
00:03
|
(14) Анатолий, слово \"отмена\" в данном контексте не мое. Посмотри по этому поводу ответ Максима Лаврова за 24 апреля и 27 мая.
Кроме того, это зафиксировано в стандарте оформления модулей, версия от 30.04.04. |
|||
16
romix
09.08.04
✎
12:40
|
(13) Речь о стиле программирования. Его можно сымитировать префиксами (для этого нужны усилия разработчика) или изначально встроить в систему. Я никого не обвиняю и не ругаю, т.к. бесполезно (конкуренция имхо все выровняет).
(14) \"разработчики стремились изо всех сил уменьшить количество типов объектов, их свойств, методов и т.п.\" - это имхо полная кора. По хорошему надо не уменьшать общее количество имен, а представлять их в объектном виде - через точку, как это сделано в более удобных для зрительного восприятия языках. |
|||
19
BorisG
09.08.04
✎
12:49
|
(16) Еще раз. Бессмысленная тема для обсуждения.
На восьмерку есть "Система стандартов и регламентов разработки конфигураций...". Плохи они, или нет... это другой вопрос. Но... они есть. |
|||
20
romix
09.08.04
✎
12:56
|
(19) Я не обсуждаю, что есть сейчас в 1С (что сделано, и сделано добротно и хорошо - то сделано). Мне более интересен общий вектор движения (в т.ч. языков вообще). Чтобы у новичков при изучении кода - на любом языке - не вылезали на лоб глаза (и другие части лица).
|
|||
21
romix
09.08.04
✎
13:01
|
(+20) то есть я хочу сказать что 8.0 сделана добротно и хорошо, но общий вектор развития языков может быть иным (везде возможны или обязательны префиксы, чтобы код было легче читать и исп. autocomplete).
|
|||
22
BorisG
09.08.04
✎
13:09
|
(20) Видишь ли... есть вполне цивилизованная форма участия в разработке стандартов. Это участие в разработке и (или) тестировании продукта. Все остальное - по сути флейм, и не более того.
А у новичков (и не новичков) глаза никуда не полезут... ибо вынуждены питаться тем, что дают. ;-)) Есть одна проблема у российских программистов... вечное несогласие с выбранным инструментом. ;-) Если у одиночного разработчика еще есть выбор, какое инструментальное средство выбрать, и то только потому, что все халявное... то в коллективе, куда пришел, будешь вынужден программировать на том, что выбрано в качестве инструмента, и по тем правилам, и стандартам, которые там приняты. Увы. И еще раз... А мыши плакали, кололись, но продолжали жевать кактус. |
|||
23
romix
09.08.04
✎
18:20
|
(22) Да это все орг. вопросы (внедрят не в той версии, так в другой, если это хоть немного поможет читать код, и не жевать кактус). :-)
|
|||
24
Тот
12.08.04
✎
20:27
|
20. Вектор движения ясен. Снизить требования к программистской квалификации настолько, чтобы конфигурить могли спецы-предметники.
1С постоянно это подчеркивает. Язык должен быть понятен специалисту-предметнику насколько это возможно. |
|||
25
romix
12.08.04
✎
20:38
|
(24) А что же 1С подчеркивает, а код (в отличие от других языков) читать невозможно? Попробуйте посидеть рядом с новичком. Сразу все поймете.
|
|||
26
Тот
12.08.04
✎
20:58
|
25. Пробовал. Действительно непросто. Но коды на других языках они понимают еще хуже. Тут хоть нотация русская... Документ, счет, план счетов, проводка - термины знакомые.
|
|||
27
NS
12.08.04
✎
21:02
|
Самый непонятный, и не поддающийся отладке и исправлению код - на Объектно ориентированных языках...
|
|||
28
romix
12.08.04
✎
23:23
|
(26) Русская нотация "запирает" код для западного рынка. А вот программировать она имхо не помогает.
+Мне ни разу не встречался новичок в языке JS (или HTML), который бы что-то не понимал. Потому что эти языки избыточные, и специально рассчитаны на предметных специалистов (которые по определению не должны учить наизусть 4-томные талмуды, и помнить, в каком контексте что может быть). Немного "лишнего" кода - и текст читается заметно легче. (27) А точно не на языках в стиле Ассемблер или GW-Basic? (где все имена - в глобальном контексте, безо всяких точек). |
|||
29
Тот
13.08.04
✎
00:09
|
28. Нотация в 8.0 будет на национальных языках. Не вижу проблем. Словарь ключевых слов и идентификаторов - и всё.
|
|||
30
romix
13.08.04
✎
15:11
|
(29) Это будет первая в мире система на национальных языках (если, конечно, в таком виде будет кому-нибудь нужна)...
|
|||
31
mazzy
13.08.04
✎
16:32
|
(30) Не первая.
В России была Рапира, Ершовский язык и другие. Во Франции Clue. Еще были. Не упомню даже. Поищите. |
|||
32
BorisG
13.08.04
✎
16:44
|
(31) Рапира Ершовская и была ;-)
|
|||
33
romix
16.08.04
✎
21:13
|
Язык (неофициальное название - "Ершол") и учебник "Основы информатики..." имел проблему с советской цензурой, когда там совершенно случайно обнаружили конструкцию ЦК..КЦ (запись цикла for). Типа намек на ЦК КПСС. Пришлось поменять ее на НЦ..КЦ. :-)
|
|||
34
mazzy
17.08.04
✎
08:40
|
ну вот, а вы говорите "первый национальный" :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |