AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Прочие вопросы
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.04.2004, 15:14   #1  
afon is offline
afon
Участник
 
6 / 10 (1) +
Регистрация: 13.04.2004
Адрес: Moscow
? отличия Х++ от С++
Подскажите пожалуста где есть в Сети какие-нибудь статьи про отличия Х++ от С++, про ограничения Х++ и т.п.
Спасибо.
Старый 13.04.2004, 15:52   #2  
DMA is offline
DMA
Участник
 
109 / 19 (1) ++
Регистрация: 30.09.2003
Очень сомневаюсь, что такие материалы существуют, так как непонятен смысл сравнения универсального языка програмирования с узкоспециализированным языком разработки бизнесс логики одной из ERP систем.

Что вы хотите получить от этого сравнения?
Старый 13.04.2004, 16:00   #3  
afon is offline
afon
Участник
 
6 / 10 (1) +
Регистрация: 13.04.2004
Адрес: Moscow
Представители Колумбуса и других внедренцев Аксапты, даже по-моему представитель Микрософт Россия, нас сказал что Х++ это тот же С++, но с определенными ограничениями.
Возник вопрос какие именно ограничения. Сами представители указанных фирм отвечают довольно уклончиво. Типа "ну вот там исключены разные системные возможности, которые для Аксапты не нужны".
Старый 13.04.2004, 16:28   #4  
DMA is offline
DMA
Участник
 
109 / 19 (1) ++
Регистрация: 30.09.2003
Цитата:
Изначально опубликовано afon
Представители Колумбуса и других внедренцев Аксапты, даже по-моему представитель Микрософт Россия, нас сказал что Х++ это тот же С++, но с определенными ограничениями.
Возник вопрос какие именно ограничения. Сами представители указанных фирм отвечают довольно уклончиво. Типа "ну вот там исключены разные системные возможности, которые для Аксапты не нужны".
Тогда понятно.
Если говорить о синтаксическом родстве, то прародителем X++ является Java. Синтаксис и основные концепции X++ взяты имеено оттуда. Конечно, синтаксически X++ напоминает C++, но ровно на столько же наскольно Java напоминает С++.

Насчет ограничений говорить сложно, ибо X++ ограничен самой Аксаптой. Вне Аксапты ни смысла ни применения он не имеет.
Например
он включает операторы организации запросов к БД
зато не имеет очень многих других возможностей, которые существуют в Java.
Все это лишь следствия специфики и архитектуры системы для которой он предназначен.

Думаю вам стоит прочесть главу "Axapta language reference" в Axapta Develper's Guide,
и поиметь собственное мнение по этому поводу.
Старый 13.04.2004, 16:45   #5  
afon is offline
afon
Участник
 
6 / 10 (1) +
Регистрация: 13.04.2004
Адрес: Moscow
Понятно. Спасибо.
Старый 14.04.2004, 08:50   #6  
YVAS is offline
YVAS
1C
Аватар для YVAS
1C
 
265 / 10 (1) +
Регистрация: 31.07.2003
Плюс ко всему в X++ нет указателей. Это, кстати, одно из ограничений.
Старый 14.04.2004, 09:58   #7  
DMA is offline
DMA
Участник
 
109 / 19 (1) ++
Регистрация: 30.09.2003
Цитата:
Изначально опубликовано YVAS
Плюс ко всему в X++ нет указателей. Это, кстати, одно из ограничений.
А что в Java они есть??
Старый 14.04.2004, 11:49   #8  
YVAS is offline
YVAS
1C
Аватар для YVAS
1C
 
265 / 10 (1) +
Регистрация: 31.07.2003
В С++ есть. Сравниваем то с С++.
Старый 14.04.2004, 12:30   #9  
DMA is offline
DMA
Участник
 
109 / 19 (1) ++
Регистрация: 30.09.2003
Цитата:
Изначально опубликовано YVAS
В С++ есть. Сравниваем то с С++.
Я вообщем-то и пытался объяснить, что сравнивать нужно с Java, а не с C++
Старый 14.04.2004, 13:40   #10  
afon is offline
afon
Участник
 
6 / 10 (1) +
Регистрация: 13.04.2004
Адрес: Moscow
тогда так:
чем отличается С++ от Java
и чем отличается Java от X++
хотя по-моему, если Java это потомок C++, а Х++ потомок Java, то следует что Х++ потомок С++.
Извините если сказал глупость.
Старый 14.04.2004, 13:59   #11  
DMA is offline
DMA
Участник
 
109 / 19 (1) ++
Регистрация: 30.09.2003
Цитата:
Изначально опубликовано afon
хотя по-моему, если Java это потомок C++, а Х++ потомок Java, то следует что Х++ потомок С++.
Извините если сказал глупость.
Истрически все верно

Цитата:
тогда так:
чем отличается С++ от Java
и чем отличается Java от X++
[/B]
Хотелось бы услышать реальный вопрос, на который вы хотите получить ответ.
Например: смогут ли наши С++ программисты успешно программировать в Axapta?
вы это хотите понять?
Старый 14.04.2004, 14:13   #12  
afon is offline
afon
Участник
 
6 / 10 (1) +
Регистрация: 13.04.2004
Адрес: Moscow
программисты на С++ в Axapta программировать смогут - это я понял.

Вопрос в общем-то в теме обсуждения.
Можно сказать проще:
насколько ущербен Х++ по сравнению с полнощенными языками (С++) и как по Вашему опыту он подходит для решения разных сложных задач (каких именно сказать не могу по неопытности работы с Аксаптой). Часто ли Вам приходится использовать всякие внешние ActiveX и тому подобное.
Старый 14.04.2004, 14:58   #13  
DMA is offline
DMA
Участник
 
109 / 19 (1) ++
Регистрация: 30.09.2003
Цитата:
Изначально опубликовано afon
программисты на С++ в Axapta программировать смогут - это я понял.
А вот здесь вы не совсем правы. Действительно, технически переход для программиста с С++ на Х++ это не вообще не проблема. Однако освоение только языка программирования является совершенно недостаточным условием успешного программирования в Аксапте. Как показывает опыт, для получения действительно хорошего Аксапта-программиста из хорошего просто-программиста, необходимо серьезное натаскивание его готовым классным спецом в течении примерно месяца, а затем минимум полгода -год дальнейшего самосовершенствования на реальных проектах и задачах, причем лучше опять-таки под присмотром готовых классных спецов, готовых отвечать на многочисленные вопросы и направлять время от времени на путь истинный.
Такая непростота обусловлена многими причинами: отсутствием полноценной документации, необходимостью жить в гармонии и уметь использовать обширный стандартный функционал системы и т.д.
И именно этой непростотой, думаю, объясняется дороговизна хороших Аксапта-программисов на сегодняшнем рынке труда.

Цитата:

Вопрос в общем-то в теме обсуждения.
Можно сказать проще:
насколько ущербен Х++ по сравнению с полнощенными языками (С++) и как по Вашему опыту он подходит для решения разных сложных задач (каких именно сказать не могу по неопытности работы с Аксаптой). Часто ли Вам приходится использовать всякие внешние ActiveX и тому подобное.
Я уже говорил, что на мой взгляд X++ некорректно сравнивать с "полноценными языками", как некорректно сравнивать скажем сенокосилку с легковым автомобилем.
Это разные вещи и они решают разные задачи. X++ совершенно не ущербен и для решения любых задач в Аксапте подходит прекрасно, особенно за отсутствием альтернатив. Всякие внешние ActiveX в аксапте (даже в стандарте) используются для раширения возможностей платформы, как правило для отображения графики и интеграции с внешними приложениями, что на мой взгляд абсолютно нормально, очень удобно и ни коим образом не свидетельствует об ущербности языка разработки .
Старый 14.04.2004, 15:00   #14  
YVAS is offline
YVAS
1C
Аватар для YVAS
1C
 
265 / 10 (1) +
Регистрация: 31.07.2003
Цитата:
Изначально опубликовано afon
насколько ущербен Х++ по сравнению с полнощенными языками (С++)
зачем же так? Не нужно воспринимать Х++ как некую урезанную смесь С++ и Java. Да он имеет элементы их синтаксиса. Но это вполне самостоятельный и достаточный язык для решения конкретных задач в Ax. Если хотите, есть выход и на внешние dll-ки. Можно работать и с ActiveX, правда я например, пользовался только для формирования отчетов. Нельзя, конечно аппаратно программировать, но это и не нужно, потому что главная то задача - это работа с БД.
Старый 14.04.2004, 15:24   #15  
afon is offline
afon
Участник
 
6 / 10 (1) +
Регистрация: 13.04.2004
Адрес: Moscow
я думаю, я понял
Начальство что-то напряглось этими заявлениями консультантов про ограничения.
А мы то как раз и работаем в основном с языками прикрепленными к СУБД типа FoxPro, T-SQL и т.п.
Старый 14.04.2004, 15:38   #16  
komar is offline
komar
Шаман форума
Аватар для komar
Ex AND Project
 
5,571 / 600 (32) +++++++
Регистрация: 24.05.2002
Цитата:
Изначально опубликовано afon
насколько ущербен Х++ по сравнению с полнощенными языками (С++)
...и как похож на человека зверь поганый обезьяна.... ( (с)Карл Линней)

Собственно, к сказанному YVAS можно только добавить, что даже не работа с БД, а работа с бизнес-логикой.
Старый 09.08.2004, 09:50   #17  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
// глюки связи
Старый 09.08.2004, 09:56   #18  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
А вот я уже давно завел практику ведения списков коренных отличий одного языка от другого - сам для себя. Потом гораздо легче вспоминать язык, если вдруг вернулся к нему после долгого перерыва. Беру "за базу" какой нибудь язык, который знаю хорошо (типа C++, Pascal или Java) и составляю список из наиболее сильных отличий, данного языка от этого базового. Массу времени экономит.

Для аксапты у меня получился такой вот список (за базовый язык взята Java, но C++ мне ближе, поэтому многие пункты хотя и есть в Java почти в таком же исполнении как и в X++, но я их всё равно упоминаю):

Цитата:
1. объекты создаются через new ObjectType( ... )
2. доступа к полям класса извне невозможен (т.е. они как бы всегда некая смесь private и protected (см. 5)
3. конструктор - метод void new( ... )
4. метод Finalize явно уничтожает объект (но автоматически системой не вызывается!). В нём может располагаться нужный код.
5. нестатические методы вызываются ВСЕГДА с использованием идентификатора объекта. Даже локальные методы должны
вызываться как this.MethodName( ... )! Но в то же время через this нет доступа к полям класса (см. 2)
6. наследование определяется как: class Наследник extends Суперкласс. Множественное наследование не поддерживается.
7. агрегатные типы (массивы, контейнеры) не могут содержать ссылок на объекты (!)
для исправления ситуации существуют Axapta Foundation Classes (lists, maps, sets, arrays, and structs)
8. методы всегда виртуальны. ключ слово final запрещает переопределение метода. весь класс может быть объявлен как final
9. к методам применимы ограничители видимости: private, protected, public (public по умолчанию)
10. внутри методов можно вставлять "внедренные функции" (наподобие паскаля)
11. пераметры трактуются как локальные переменные (передаются по значению)
12. существуют параметры по умолчанию: void new( boolean isFemale, date birth = today() )
13. статические методы могут быть вызваны только через :: например MyClass::MyMethod();
14. типы данных:
- boolean (false, true)
- int (32-битное со знаком)
- real (BCD числа с 16-ю значащими разрядами (64-бита))
- date (литералы записываются как day\month\year, может быть null)
- str (может быть ограничена по длине (str 10 a) в таком случае можно указывать выравнивание (str 10 left a)
- enum - определяются в дизайнере, а не в коде
- массивы задаются квадратными скобками после определения переменной (как обычно)
индексы начинаются с 1! присвоение любого значения элементу с индексом 0 обнуляет весь массив!!!
могут быть статическими: int a[ 10 ]
динамическими: int a[]
частично сохраняемыми на диск: int a[1000, 10] или int a[, 10]- второе число - число элементов хранимых в памяти
могут быть только одномерными! при этом синтаксис не поддерживает массив массивов, так что обламываемся
- container - может содержать всё, кроме объектов (даже таблицы, или расширенные типы)
литерал контейнера - список значений разделенных запятыми в квадратых скобках: [ 1, "abc", ... ]
работа с контейнером (очистка, добавление значений, поиск и т.д.) ведется через набор ф-й con*( ... )
плюс: поддерживается множественное присвоение: container c = [1,3.14,"Hello"];
[i,r,s] = c; // Extracts 1 into i, 3.14 into r and "Hello" into s
оператор += добавляет значение в конец контейнера: c += "строка";
- Расширенные (Дополнительные) Типы Данных объявляются в конфигураторе в ветке дерева Extended Data Types
по сути - typedef-ы за мелкими ограничениями. например завести тип name, как str 100 left
- Классы (Объекты) - по сути лишь указатели (как в Delphi, Java). Действует автоматический сборщик мусора.
общий (базовый) для всех класс - object.
- Таблицы - внешне для программиста выглядат, как объекты. Отличия:
- не нужно выделять память через для таблиц - она выделяется автоматически (?)
- нельзя наследовать от таблиц
- поля в таблицах всегда public и к них можно обращаться отовсюду!
- на поля в таблице можно ссылаться используя выражения: tableName.( expression ) вместо tableName.fieldName
общая для всех таблица (как object для объектов) - common
15. арифметические операции в отличие от клонов C/C++ имеют операции div и mod, в остальном похожи
16. переменные надо объявлять ДО первых операторов
16.5. т.к. имена переменных могут совпадать с именами типов в языке введена избыточная ; для отделения блока деклараций от тела ф-ии для разрешения конфликтов имен. в других местах лишние ; запрещены
17. Есть abstract классы и методы
18. Есть методы с модификаторами display и edit (отдельная тема)
19. Комментарии в стиле C/C++ , т.е. // и /* */
20. Основные управляющие операторы (if, for и т.д.) содраны с Java/C/C++
21. select как оператор языка (выполняется над Таблицами)
22. while select { операторы } выполняет операторы над всеми строками запроса
23. delete_from как быстрая альтернатива while select ... { r.delete() }; и другие DML-операторы
24. ttsbegin/ttscommit/ttsabort - работа с транзакциями
25. try/catch/throw/retry - работа с исключениями - retry - возвращает в начало блока try
На какое либо описание языка список не претендует, но для новичков, знакомых с Java или C++ может обозначить спорные моменты.
За это сообщение автора поблагодарили: alex55 (1).
Старый 09.08.2004, 10:54   #19  
YVAS is offline
YVAS
1C
Аватар для YVAS
1C
 
265 / 10 (1) +
Регистрация: 31.07.2003
Добавил бы: оператор select ..возвращает не набор записей а первую запись, удовлетворяющую условию where.
Старый 09.08.2004, 11:16   #20  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Цитата:
Изначально опубликовано YVAS
Добавил бы: оператор select ..возвращает не набор записей а первую запись, удовлетворяющую условию where.
Уверен? А не пробовал перекрыть метод executeQuery() источника данных формы, написав после super() некий select. Разве в гриде будет не более одной записи?
Теги
c++, java, x++, сравнение

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Какие принципиальные отличия, кроме пособий по больничному, в Расчете с персоналом 4.0 по сравнению с 3.0? Игнатьева Ирина DAX: Функционал 2 28.03.2008 10:09
Отличия в строках ReqPO, почему одна строка появляется в форме а другая нет (Master Planning, Planned Orders) rkorchagin DAX: Программирование 8 21.02.2007 16:27
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:37.