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. я и так не пользуюсь ни тем ни другим, а третьим и отлично себя чуствую - мне за державу обидно. тревожно когда в мире множится альтернативная реальность в виде манагед экстеншенс и народ на нее жестко сажают до такой степени что он потом недоумевает почему не идет сборка проги содержащей эти самые экстеншенс на другой машине... так и до признания расширений стандартом не далеко) | |
| Интернет-форум Краснодарского края и Краснодара |