К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Хочется странного... языка с автосозданием объектов

Гость
0 - 14.02.2012 - 09:33
Всем день добрый.

Есть идея фикс: язык или библиотека, позволяющие делать такое:

// Объявляем объект типа TStringList
var List:TStringList ;
...
// При первом обращении к объекту, он автоматически создается компилятором
// как List:=TStringList.Create()
// И следующая инструкция вызовет метод Add класса TStringList
List.Add('abc') ;
...

// Но при этом я могу позже пересоздать его вручную в совместимый тип

type
TStringListExt = class(TStringList)

List:=TStringListExt.Create() :

Какой язык позволяет делать нечто подобное?



Гость
41 - 15.02.2012 - 15:22
40 да тут кагбэ завышать не приходицо при общении с rcorp,sserj,vxg местная клоунота. слышат звон, не знают где он. :)
Гость
42 - 15.02.2012 - 15:24
39 - не нужно мне объяснять про то, что без знания дот нет не дают марсианское гражданство - это и так понятно. объясни лучше зачем, чисто идеологически, было привносить в код программы которая была объявлена как создающаяся на языке C++ иноязычные конструкции? это - агрессия. человек сел писать на C++ и он хочет видеть перед собой C++, а ВООБЩЕ непонятно что. можно долго дебатировать про то, что теперь можно писать под что угодно и сопрягать приложения написанные на чем угодно, но на деле - нельзя писать ни на чем кроме этого непонятно чего. по-моему - глупый и необоснованный подход. хотелось им в песочницу поиграть - сидели бы в своем дот нете. зачем создавать гибридный код - зогадко.
Гость
43 - 15.02.2012 - 15:25
41 - улыбнул.
Гость
44 - 15.02.2012 - 15:38
Используя словесные конструкции саженцов - даЯ в туалет на своих двоих ходил, когда вы се под себя...
Умиляет МЧ, так умиляет. "Вы все гамно, один я робин гуд"
Гость
45 - 15.02.2012 - 15:50
44 нет, не все гавно. только rcorp, sserj, etc...

почему? а все потому - не зная брода лезут в воду.

пысы. rcorp, а куда девался твой показной вежливый диалект? говорил, же маска это все. под ней гамно.
Гость
46 - 15.02.2012 - 15:52
Як ребенок, что, собственно и есть.
Уж больно детская риторика.
Гость
47 - 15.02.2012 - 16:09
43

1) прелести управляемого кода не обьясняю. считаю, что ты в теме если не по уши, то по яйца.
2) в .net исполняющая среда называется clr (не "как ее там", а clr). common language runtime. что не только намекает, на то, что писать программы можно на разных языках, но и является фактом. ты можешь написать куски однй и той же программы на разных языках.

vb,c#,f#,c++, в нете гугли другие языки.

3) понятно, что есть managed код, написанный под .net и native unmanaged.

4) понятно, что бывают случаи когда часть кода:

a) уже написана в виде native unmanaged
б) из каких-то соображений будет написана как unmaged

а остальное планируют писать как managed.

4) Для решения пункта 3 есть способы под разные сценарии COM Interop, PInvoke, C++ managed extensions.

5) Роли c++ в этом всем следующие, в зависимости от сценария:
а) разработка целиком unmanaged приложений на с++
б) разработка приложений под. net на c++
в) разработка мостиков между unmanaged кодом и managed кодом, когда ComInterop и PInvoke, не удобны.

писал с тела.
Гость
48 - 15.02.2012 - 16:28
Объясните старому программеру, о чем ваще тред?
О крутизне .net и тупизне асма?
Оно жеж все для разных задач.
Нормальному человеку и в голову не придет реализовывать серьезную GUI прогу на асме.
Но и ни один вменяемый человек обработку больших массивов бинарных данных не будет писать на .net.
Гость
49 - 15.02.2012 - 16:31
48 тред не о том. он для лулзов.
Гость
50 - 15.02.2012 - 18:46
47 - наконец то. ну так скажи - при всей крутости этого clr на кой он черт в программе которая заявлена как C++? создали бы язык (что они собственно и сделали) и крутились бы на нем. к чему все эти фанерные Visual C++/Basic/C# если по факту это clr на который каждый желающий мажет тонкий слой любимого повидла? зло одним словом :)
Гость
51 - 15.02.2012 - 19:15
C++ он назван потому, что он реализовывает стандарт C++. И как уже выше заметили, ввели в него новые синтаксические конструкции, чтобы программа, ранее написанная на unmanaged C++, могла быть портирована в managed-среду. Ну или чтобы люди могли писать unmanaged-код под .NET, если им так хочется.
Гость
52 - 15.02.2012 - 19:19
30-Mikle Quits > Так я не понял, он создастся там, где объявлен (т.е. во время создания своего "владельца") или же при первом обращении? Вот автор писал про первое обращение, и я привёл на этой базе пример, как можно себе отстрелить ногу.
Гость
53 - 15.02.2012 - 19:25
42-vxg > На деле гибридный код может быть нужен
а) для оптимизации - в unmanaged-части программы выделение и удаление памяти происходит руками, прямой доступ к памяти позволяет оптимизировать программу по памяти
б) можно работать с CUDA и прочими GPGPU-новшествами, написав для них оболочку на unmanaged-коде;
в) для портирования давно написанных больших частей программы с C++ на .NET. Не переписывать же их с нуля? Для склеивания новых частей на .NET со старыми на C++.

Вот неужели непонятно, насколько это круто? Жаль, что MS убили поддержку Java, а ведь раньше я перекомпилировал Java-программы под .NET, и это было очень-очень удобно, сэкономило кучу бабла.
Гость
54 - 15.02.2012 - 19:28
И какой бы баттхёрт не испытывали Delphi-программисты, их любимый язык умер, не выдержав конкуренции, и его место занял Object Pascal, который полностью сделан под .NET компанией Embarcadero.
Гость
55 - 15.02.2012 - 19:35
Хотя конечно классический Delphi ещё дышит, но я имею ввиду проект Delphi Prism, который мне кажется вытеснит в итоге Delphi с рынка.
Гость
56 - 15.02.2012 - 19:39
А вытеснит от Delphi, потому что изначально Delphi-программы трудно портировать на другие языки. Можно использовать COM, но это ОЧЕНЬ напряжно и муторно - у меня летом был квест на эту тему, и решил я его только с помощью .NET... А C++-программы портировать гораздо проще благодаря как раз-таки C++/CLI от Microsoft, когда-нибудь и до создателей/пользователей Delphi дойдёт, что многоязычная среда рвёт по гибкости моноязычную. ;)
Гость
57 - 15.02.2012 - 20:42
2 SilverEye - я отдаю себе отчет почему они добавили все это барахло, но тешу себя мыслями, что в идеале все должно было быть в рамках того языка на котором человек пишет. т.е. компилировать программу одновременно содержащую файлы bas и cpp которые в состоянии общаться действительно приятно, но если за это заплатить цену обучения еще одному языку - жесть. те же C++ и Basic (думаю C# тоже) отлично сращиваются через COM - на мой взгляд действительно алмаз мысли майкрософт. почему они не пошли этим путем - наверное хотели попрямее. а вышло как то неочень имхо
Гость
58 - 15.02.2012 - 21:04
50 ты не понял чуть более чем никуя. и не пиши мне в личку.
Гость
59 - 15.02.2012 - 21:09
57

"... е же C++ и Basic (думаю C# тоже) отлично сращиваются через COM - на мой взгляд действительно алмаз мысли майкрософт..."

на мой взгляд как с++ в том числе вплотную работавшего с com (сервера/клиенты). ты несешь полную куету.

"...почему они не пошли этим путем - наверное хотели попрямее. а вышло как то неочень имхо..."

потому что этот путь ведет не далее чем в унитаз. и они это прекрасно поняли.

--
даже смысла не вижу разжевывать ниче не поймешь. и опыта и знаний - мало у тебя.
Гость
60 - 15.02.2012 - 21:11
ох ёп.


фразу "на мой взгляд как с++ в том числе вплотную работавшего с com (сервера/клиенты). ты несешь полную куету."

понимать как

на мой взгляд, как бывшего с++'ка в том числе вплотную работавшего с com (сервера/клиенты). ты несешь полную куету.
Гость
61 - 15.02.2012 - 21:26
vxg, ты лучше пообьясняй вот этот свой шедевр

"... 32 - ну так объясни для чего господам из MS нужно было привносить в самодостаточный язык C++ иноязычные конструкции без понимания которых невозможно создать программу в Visual Studio потому как все что касается GUI идет через эту "срань"?..."

(срань надо полагать, расширение языка под .net)

я прошу, так уже, почитать/поулыбаться.
Гость
62 - 16.02.2012 - 10:05
58 - пишу куда хочу и что хочу :)
59 - как всегда без аргументов, кроме того - ты сам себе противоречишь с одной стороны говоря, что, согласно приснившейся тебе информации, я "бывший" и "вплотную работавший", а с другой, при этих всех регалиях, "несущий чушь" и "не имеющий опыта". если по делу нечего сказать не нужно вообще ничего писать.
61 - объясняю "шедевр" в том виде в котором я понял твой вопрос. у меня был единичный опыт работы с MS Visual "так называемым" C++. при написании приложения для intel app store под процессор atom. поставляемый intel sdk был ориентирован на MS Visual C++. поэтому пришлось поставить эту среду. открыл редактор форм - ничто не предвешало беды :) отрисовал интерфейс, создал обработчик и... меня вынесло в h-файл содержащий CLR-специфичный даже не знаю как сказать... объект формы и оперирующий соответствующим синтаксисом. причем тут же мне позволялось, сопровождая свою деятельность небольшими шаманскими движениями, делать вызовы традиционных C++ функций из других человеческих модулей подключенных к приложению и даже в чем то использовать синтаксис C++. поскрипел зубами - сростил, пережил. но осадок остался. я не знаю был ли другой путь, просто предполагаю. что мешало им выполнить GUI в виде COM-объектов понимаемых в той или иной степени большинством языков которые они возомнили охватить? что мешало им сделать доступ к функциям, переменным и даже классам из модулей написанных на разных языках не привлекая эту CLR-склейку? она сама по себе выглядит дико - хоть бы обрамляли код какой нибудь директивой говорящей о том что сейчас пойдет специфичный код. теоретический в общем вопрос.
Гость
63 - 16.02.2012 - 10:46
62, говоря про бывшего c++'ка, я имел ввиду себя. и натрахался я с com/dcom на c++ (atl) достаточно (opc и свои поделки). я с тобой категорически не согласен по поводу com: "алмазный", "удобный" и т. п..

6 лет назад пересел на .net.

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

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

я тебе написал какую роль играет. c++ в Microsoft. и silvereye тебе написал.

1) ты можешь писать полностью native приложения на c++, в том числе и GUI. тебе предлагается ис коропки. mfc, кажись еще и wtl. можно пользовать и сторонников либы/фреймворки разработки GUI.

2) можно написать на c++ полностью приложение под .net. Используя все возможности .net и существующих unmanaged библиотек. Обычно так поступают со старьем, на переписывание которого требуется много денег.

3) Пейсать мостики для существующего .net приложению к некоторому unmanaged коду (стороннее native sdk, сторонников библиотеки, зубодробильное взаимодействие с оборудованием. и т. п..). этот пункт выгоден, если не удобно использовать pinvoke, cominterop.

Выбирай согласно сценарию. Если ты работаешь по старинке, то просто выбирай пункт 1 и не думай об 2,3. но если тебе попалось приложение, или кусок, как в 2,3 причем тут .net? надо спросить разработчиков проекта - "почему они так поступили?".

.net дает много возможностей, тока надо ж учить, а не мышкой по флрмочке тыкать и бездумно набивать обработчеги кнопачек (как я понял, так у вас в проекте и делают, это намекает на гавнакод).
Гость
64 - 16.02.2012 - 11:25
63 - за других не надо думать "что и на что намекает". я тоже могу сказать что манера твоего общения намекает на то что ты вообще на зоне отдыхаешь. по поводу 1 - сформулирую так - редактор форм поставляемый со средой рассчитан на то что я описал (не C++). безусловно человек с головой и целой жизнью впереди прикрутит какой угодно GUI к студии или вообще напишет обработку сообщений окна на низком уровне. речь идет о том что создатели среды разработки сознательно вторглись в чужие языки. я не смотрел что они сделали с basic, но этот вопрос меня заинтересовал - они и в него привнесли все эти инопланетные и чуждые по определению для разработчика на basic конструкции или встаки портировали что то в нормальные basic?
Гость
65 - 16.02.2012 - 11:31
по поводу ком - не нужно было на атл писать
Гость
66 - 16.02.2012 - 11:44
64 я щас общаюсь с человеком, который до сих пор думает, что зимля плоская и стоит на головах слонов (о чем ты говоришь ващпе? в студии дизайнеров форм несколько под mfc, winforms, wpf,silverlight). как с тобой общаться хз. :).

65 попробуй .нет, :). когда-то я с пеной у рта рвал жопу за ком.
Гость
67 - 16.02.2012 - 12:20
66.1 - к сожалению нет под рукой студии с C++ что бы позабавить тебя выдержками из кода. пришлось запускать студию для basic и... о Боже, что я вижу! тело обработчика выглядит как то так:
----
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
End Sub
End Class
----
явно это не то, что я вижу создавая обработчик в C++ - это родной для basic код. то есть о basic они позаботились, а о C++ почему то нет...
66.2 - героин не предлагать, знаю что он классный, но вижу, что он делает с людьми :)
Гость
68 - 16.02.2012 - 12:44
67 понимаешь в чем дело, попробую на пальцах.

с++ исключение из правил по одной простой причине. ему по мимо двух сценариев:
1) разработка native приложений
2) разработка .net приложений

отведен микрософтом и третий сценарий:
3) клей между native и .net.

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

вот поостенький пример: у с++ своя куча, у .net своя со сборщиком мусора. потому и ввели ^ наряду с *. смысл этого принципиально разный. и способы работы с этой "разной" памятью разные. и есть методы по передаче указателей памяти стандартной кучи в управляемый код и наоборот ссылок из управляемой .net кучи в неуправляемый native код.

это только один маленький пример.

при таком сценарии, необходимо было расширить синтаксис. иначе никак. Эти расширения и собраны в группу c++ managed extensions.

У этого расширения вполне определенная цель.

--
И еще раз ты можешь, применяя Микрософт С++ пойти по-любому из перечисленных сценариев1,2,3, свой вариант.



С++ от микрософт
Гость
69 - 16.02.2012 - 15:14
а зачем было трогать c++? клеили бы на своем c#, или, чего уж там мелочиться, выдумали бы еще один самокат.
Гость
70 - 16.02.2012 - 15:24
69-vxg > Если после стольких объяснений до тебя не доходит зачем нужен C++/CLI, то уже и не дойдёт. :(
Гость
71 - 16.02.2012 - 15:28
- Зачем нужен C++ от Microsoft?
- Чтобы портировать на .NET программы, написанные на обычном C++.
- Но зачем C++ было трогать?

Занавес.
Гость
72 - 16.02.2012 - 15:29
2 SilverEye - мне не интересно для чего он нужен - какую цель они преследовали я и так осознаю. не понимаю лишь для чего нужно было "увековечивать" себя уродуя C++ попутно ломая ноги всем вокруг. некультурно это как то. я ж говорю - выдумывали бы очередной самокат. назвали бы его MSCPP или еще чего нибудь там. а так - получается прикрывание брендом C++ своего восполенного самомнения
Гость
73 - 16.02.2012 - 15:30
Ну так это C++ и есть! Потому что стандарт C++ поддерживает в полной мере!
Гость
74 - 16.02.2012 - 15:30
вторжения в язык наблюдались у разных компаний и в разном объеме, но на мой взгляд никто кроме MS так сурово не ронял рояль в огород
Гость
75 - 16.02.2012 - 15:33
то есть вот эта байда

public ref class main_form : public System::Windows::Forms::Form //смотрим на ref

или вот эта

private: System::Windows::Forms::Label^ digits_name; //смотрим на ^

- стандарт?... отстал я
Гость
76 - 16.02.2012 - 15:35
Да нет тут вторжения в язык! Стандарт поддерживается, оригинальный C++ не тронут. Программа, написанная для нативного C++, скомпилируется на C++/CLI вообще без изменений.
Гость
77 - 16.02.2012 - 15:43
76 - согласен. но почему они лишили меня радости ваять GUI на оригинальном C++? почему они в отличие от VB поленились портировать код создаваемый конструктором форм и прилегающую требуху? экспансия нововведенных конструкций - вот.
Гость
78 - 16.02.2012 - 15:43
Ты путаешь тёплое с мягким, не понимая, что такое стандарт языка.
Например, в стандарт C++11 ввели лямбда-выражения, однако компиляторы C++11 обратно совместимы с C++, т.е. скомпилируют любую "старую" C++ программу. И что, исходя из твоей логики C++11 это не C++?
Microsoft сделали РАСШИРЕНИЕ стандарта, а не его ЗАМЕЩЕНИЕ.
Гость
79 - 16.02.2012 - 15:45
77-vxg > Никто тебя радости этой не лишал. Используй MFC, например. Я вот использую вообще Qt с его редактором форм... Формы и их редакторы НИКАКОГО отношения к языку программирования не имеют, это просто инфраструктурные "плюшки".
Гость
80 - 16.02.2012 - 15:55
2 SilverEye - ну так не честно. вы свели все к вопросу чем тебе не нравится MS Visual пользуйся Qt. я и так не пользуюсь ни тем ни другим, а третьим и отлично себя чуствую - мне за державу обидно. тревожно когда в мире множится альтернативная реальность в виде манагед экстеншенс и народ на нее жестко сажают до такой степени что он потом недоумевает почему не идет сборка проги содержащей эти самые экстеншенс на другой машине... так и до признания расширений стандартом не далеко)


К списку вопросов






Copyright ©, Все права защищены