Имя: Пароль:
1C
 
Язык 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
ну вот, а вы говорите "первый национальный" :)