Оффтопик. Изучаем C#

Автор Тема: Оффтопик. Изучаем C#  (Прочитано 244991 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн WindcastleАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
Re: Изучаем C#
« Ответ #15 : 28-08-2015, 20:46:26 »
Можно будет в личные сообщения вопросы задавать?

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Изучаем C#
« Ответ #16 : 28-08-2015, 20:46:34 »
Но с C# я тут буду не в тему!
Вот хороший дополнительный ресурс, где можно задавать вопросы по кодингу и около того.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Изучаем C#
« Ответ #17 : 28-08-2015, 20:47:48 »
Можно будет в личные сообщения вопросы задавать?
Нет, в личке этого лучше не делать, т.к. в случае открытого общения полезный ответ могут дать и другие форумчане. Можешь в личку присылать ссылки на свои вопросы, опубликованные на обозначенном мною выше ресурсе. Правда там отвечают быстро, возможно, что ответят и до того, как ссылку получу я. :)

Оффлайн WindcastleАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
Re: Изучаем C#
« Ответ #18 : 28-08-2015, 20:53:02 »
Так я ж по C# вроде как думал вопросы задавать. Просто не хотелось бы остаться с "китайской грамотой" один-на-один, а то глядишь и свихнусь, или мотивация в ноль уйдет.

Просто я считаю, что если я прочел книгу и не смог толково ее пересказать или объяснить, то значит я ее зря читал... Не хочу этого, но и мучать других не хочется. Просто хочется понимать настолько ясно, чтобы потом маленькому ребенку (пере/рас)сказать смог.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Изучаем C#
« Ответ #19 : 28-08-2015, 20:57:24 »
не хотелось бы остаться с "китайской грамотой" один-на-один
C# очень простой язык. Шильдт (да и не только он) излагает материал последовательно и понятно. Для освоения с нуля вполне подходит (как справочник). Я учился по Троелсену и использовал Шильдта как дополнительное чтиво + справочник.

Если C# для тебя и после чтения книг является "китайской грамотой", то вполне возможно, что программирование - это не твоё.
« Последнее редактирование: 28-08-2015, 21:24:11 от Александр Ривилис »

Оффлайн WindcastleАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
Re: Изучаем C#
« Ответ #20 : 28-08-2015, 21:20:03 »
Если C# для тебя и после чтения книг является "китайской грамотой", то вполне возможно, что программирование - это не твоё.

Я знаю чего Вам, Андрей, не хватает. Вам не хватает чуткости по отношению к начинающим. Меня лично Ваши слова "программирование - это не твоё" - задели, вернее мне вдруг уже захотелось закрыть книгу и не читать ее. Наверное, лучше знать тот язык, который понятен, а не тот, который популярен, хотя VB.NET тоже популярен.

Я может тоже не очень корректен был назвав книгу "китайской грамотой", за что извиняюсь.

Вы правы, Андрей, эту тему пора закрыть.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изучаем C#
« Ответ #21 : 28-08-2015, 21:23:13 »
Меня лично Ваши слова "программирование - это не твоё" - задели, вернее мне вдруг уже захотелось закрыть книгу и не читать ее
Ну вот. А я только-только сказал Андрей Бушман, что он в этот раз удивительно деликатен. Обрати внимание, что это было не утверждение, и даже не предположение, а теоретическое рассуждение о такой возможности.

P.S.: Эту тему я как раз для такого оффтопика оставил.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн WindcastleАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
Re: Изучаем C#
« Ответ #22 : 28-08-2015, 21:38:35 »
Я правда хочу, но становится как-то не по себе, когда кто-то утверждает / предполагает, что если не осилишь, значит не программист! Как если бы я только учился ходить и вдруг кто-то со стороны сказал: "Падает, да уж, наверное, ходить не сможет, а может и не дано!".

Я уверен, что если человек специалист в своем деле, то он сможет объяснить легко и просто даже ребенку то, что знает он, если конечно он действительно понимает и знает свое дело.

Оффлайн WindcastleАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
Re: Изучаем C#
« Ответ #23 : 28-08-2015, 22:06:45 »
Что такое рефлексия? Уже седьмой раз читаю это слово в книге, но не понимаю о чем идет речь?

В мире .NET рефлексией (reflection) называется процесс обнаружения типов во время выполнения. С применением служб рефлексии те же самые метаданные, которые отображает утилита ildasm.exe, можно получать программно в виде удобной объектной модели. Например, рефлексия позволяет извлечь список всех типов, которые содержатся внутри определенной сборки *.dll или *.ехе (или даже внутри файла *.netmodule если речь идет о многофайловой сборке), в том числе методов, полей, свойств и событий, определенных в каждом из них. Можно также динамически обнаруживать набор интерфейсов, которые поддерживаются данным типом, параметров, которые принимает данный метод, и других деталей подобного рода (таких как имена базовых классов, информация о пространствах имен, данные манифеста и т.д.).

Сразу неимоверное количество вопросов возникает:
1. Что подразумевают под метаданными?
2. рефлексией (reflection) называется процесс обнаружения типов во время выполнения... Чего? Типов данных?
3. Что подразумевают под удобной объектной модели... типа иерархическая структура (древовидная)?
4. если речь идет о многофайловой сборке... Это типа, когда я пишу EXE приложение, но в проекте еще дополнительно создаю проект библиотеку классов? Или что это?
5. полей ... Это контрол на форме или что?
6. имена базовых классов ... Это как в классе Человек.Голова.Рот.Сказать ("Здрасте"): именами базового класса Человек будут Голова и Рот?
7. Чем пространство имен отличаются от просто имен базового класса?
8. Манифест - это типа файл настроек? Или нет?

Оффлайн WindcastleАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
Re: Изучаем C#
« Ответ #24 : 28-08-2015, 22:20:19 »
Обрати внимание, что это было не утверждение, и даже не предположение, а теоретическое рассуждение о такой возможности.
Если C# для тебя и после чтения книг является "китайской грамотой", то вполне возможно, что программирование - это не твоё.

Речь идет не об абстрактном человеке, у которого может не получиться, а конкретно адресовано мне. Как бы эти слова программируют меня (вброс в подсознание), что я уже какой-то не-до-программист. Я не обижаюсь, я просто сделал вывод. Коим и поделился. Эти слова не похожи на Ваши, когда Вы мотивировали изучать C#, просто хотя бы потому что это язык для профессионалов... как будто это уже признак профессионализма. Вот это мотив, не правда ли?

Если из фразы  убрать "...вполне возможно, что...", то суть останется той же и соответственно и уже не идет речь о рассуждении, здесь уже, можно сказать, определился фактор, по которому можно судить: "Не понимаешь - значит не твое", причем не просто не твое (всмысле C#), а вообще любое программирование! Я увидел это так.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изучаем C#
« Ответ #25 : 28-08-2015, 23:05:46 »
1. Что подразумевают под метаданными?
https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%B0%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D0%B2_.NET
2. рефлексией (reflection) называется процесс обнаружения типов во время выполнения... Чего? Типов данных?
Типов данных, имён методов, свойств, событий, типов числа и порядка аргументов и т.д. и т.п.
3. Что подразумевают под удобной объектной модели... типа иерархическая структура (древовидная)?
Один раз возьми и воспользуйся утилитой ILSPY ( http://ilspy.net/ ) и посмотри при помощи неё какую-нибудь .NET-сборку. Например, acmgd.dll из каталога AutoCAD. Увидишь много интересного и полезного.
4. если речь идет о многофайловой сборке... Это типа, когда я пишу EXE приложение, но в проекте еще дополнительно создаю проект библиотеку классов? Или что это?
Можешь создавать сам, а можешь подключать уже готовые .NET-сборки (dll-файлы).
5. полей ... Это контрол на форме или что?
Нет. В C# есть понятие полей.
6. имена базовых классов ... Это как в классе Человек.Голова.Рот.Сказать ("Здрасте"): именами базового класса Человек будут Голова и Рот?
Нет. Про базовые классы и наследование двумя словами не скажешь.
7. Чем пространство имен отличаются от просто имен базового класса?
Это просто совершенно разные вещи. Пространство имён используется только для разделения понятий. Например, пространство имён AutoCAD и пространство имён Revit. И там и там допустим есть класс Point3d, но они совершенно по-разному устроены. Чтобы не было пересечений по именам будешь указывать AutoCAD.Point3d и Revit.Point3d в одном и том же модуле. Это я очень упрощенно...
8. Манифест - это типа файл настроек? Или нет?
Почитай: https://msdn.microsoft.com/ru-ru/library/1w45z383%28v=vs.110%29.aspx

P.S.: Мне кажется, что ты слишком на долго застрял на введении.
« Последнее редактирование: 28-08-2015, 23:43:28 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изучаем C#
« Ответ #26 : 28-08-2015, 23:14:49 »
Я уверен, что если человек специалист в своем деле, то он сможет объяснить легко и просто даже ребенку то, что знает он, если конечно он действительно понимает и знает свое дело.
А вот тут ты совершенно не прав. Далеко не каждый очень классный программист может научить другого человека программированию. И далеко не каждый классный учитель программирования в состоянии создать программный шедевр. Талант учителя и талант программиста - это совершенно разные и зачастую непересекающиеся вещи. И это касается не только программирования. Есть множество случаев, когда спортсмен не достигший вершин в спорте становился тренером будущих олимпийских чемпионов. А эти олимпийские чемпионы, став в дальнейшем тренерами, не смогли вырастить себе достойную смену.
Как бы эти слова программируют меня (вброс в подсознание), что я уже какой-то не-до-программист.
Ну как бы защищайся. Как минимум докажи (на деле), что он не прав! :) Одних для достижения максимального результата нужно всегда хвалить, других постоянно ругать, третьи любят сочетания кнута с пряником...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Re: Изучаем C#
« Ответ #27 : 29-08-2015, 00:59:12 »
Я не обижаюсь, я просто сделал вывод. Коим и поделился. Эти слова не похожи на Ваши, когда Вы мотивировали изучать C#, просто хотя бы потому что это язык для профессионалов... как будто это уже признак профессионализма. Вот это мотив, не правда ли?
Раз уж создали тему для где можно флудить...
Да не переживай - Андрей грамотный специалист, постоянно и непрерывно поднимающий свою квалификацию (идя в ногу с технологиями) и охотно делящийся с ней со всем интернетом (реально тратящий на это много человеко-часов чистого альтруизма). Но стиль общения у него иногда пугает неподготовленного читателя - мне впрочем иногда тоже хочется обматерить очередного начинающего специалиста-программиста который печатать научился, а читать нет, причем еще бывает и особый вид - которые считают, что если он соизволил свой вопрос написать - который на первой-же строке гугла ответ высвечивает, то ему просто все обязаны.
Чтоб тебя успокоить - хотя успокоит-ли это - могу сказать, что я хоть и программист, но больше чем C# меня бесит только язык программирования 1С (VB.xxx я впрочем вообще не использую) - нет он мне более чем понятен, но писать я на нем не могу "физиологически" - тошнит. Если в книге много неясного, то возможно она либо не на твой уровень (все когда-то начинали), либо просто не твоим языком написанна - уверен - было-бы желание, C# может "осилить" абсолютно каждый - просто на это время требуется. Пробуй, пиши, не бойся ошибаться - меньше "копипасты", больше осмысленного кода - пробуй - а почему в книге так, а не попробывать вот-так - вникай в суть - на интересный вопрос тебе с удовольствием ответят (бывает глянешь на названия вопросов - и даже открывать их не хочется - только старый добрый Александр - дай бог Вам здоровья, искренне завидую широте Вашей души - и вытягивает).
А Андрей, наверное, еще не раз Вас "потролит" - ему можно - он "заслужил" такое право.

Оффлайн WindcastleАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
Re: Изучаем C#
« Ответ #28 : 29-08-2015, 08:34:09 »
"физиологически" - тошнит.

Так близко к истине ))) Точно такое же ощущение, когда не понятно )))

Я поймал себя на мысли, что моя проблема заключается в том, что после чтения книги я не могу связать в логическое предложение то, что прочел. Не потому что косноязычен, а потому что после прочтения родилось больше вопросов, чем ответов. Как если бы я прочел массу книг по английскому языку, но так до сих пор и не знал его. А в принципе так и есть. Я на нем могу говорить, писать, переводить со словарем, могу разговаривать в отдельных случаях, но если меня кто-то спросит: "а как вообще английский язык устроен, что он из себя представляет", то я разведу руками и отправлю спрашивающего по тому пути, по которому прошел сам: "вон, видишь там гора книг по теме, иди и читай...". Но это же неправильно. Спрашивающий скорее грустно вздохнет, вынуждено пойдет к этой горе и круговорот непонимания захлестнет следующего. Я это вижу так.

На форумах я нашел ответы, вопросы на которые мучали меня годами. Скорость решения задач резко возросла лишь потому, что появилась ясность. Я уже смело набирал код, понимая как он работает, не опасаясь, что он где-то выскочит с ошибкой. Я понимаю, что мне было нужно - понимание, а не просто копи-паст кода.

Да, в любом случае буду читать, стараться, но если я не пойму сути, то я не хотел бы быть осмеянным кем-то... А Андрей, наверное, еще не раз Вас "потролит" - ему можно - он "заслужил" такое право. - это не соответствует этике по большому счету. Если человек заслужил "корону", то он де-факто получил право на "издевательства" над некоронованными? О нет, я не за этим пришел. Когда я "вырасту", то я вынуждено выступлю антагонистом Андрею.

Оффлайн WindcastleАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
Re: Изучаем C#
« Ответ #29 : 29-08-2015, 08:41:16 »
Александр, доброе утро!

Итак, как я понял прочитанное:
1. Метаданные - это как карта городов (допустим России) с описанием каждого города, его краткой историей, описания его улиц с номерами домов, транспортных остановок, магазинов и т.д. Что-то типа структурированной (визуализированной) информации об объекте (страны под названием Российская Федерация). В нужном направлении думаю?

2. Рефлексия - это процесс, когда один объект отслеживает другой объект, определяет его метаданные. Что-то типа, когда молодой человек рассматривает девушку и определяет ее параметры, свойства и ее методы (ее возможности). Приблизительно так?

3. Посмотрел ILSPY и вижу упорядоченную, структурированную древовидную информацию по каждой библиотеке. Какие в каждую из них входят классы, какие у этих классов методы и свойства... Вроде так вижу.

4. То есть я пишу приложение *.exe, к нему могу подключать *.dll файлы (извне) или добавить в проект еще один проект библиотеки *.dll, которая будет зависеть от данного приложения *.exe. Но при этом созданная библиотека внутри может быть подключена другими приложениями. Так?

5. Поля - это не понятно!

Код - vb.net [Выбрать]
  1. Public Имя As String
  2. Public Property Фамилия As String

Вроде как внутри класса можно создать просто переменную, и можно также создать свойство, только понять не могу для чего это нужно, если и поле и свойство будут отображаться при использовании класса. Для чего используется поле? Свойство мне понятно! Это как цвет глаз у человека, например. Но если я создам поле с таким же названием цвет глаз, что принципиально стало другим? Не пойму!

6. Под вопросом так и остается.

7. То есть это как если были бы хоккейное и футбольное поле, но вратари в обоих случаях были бы разными. На футбольном поле это легко одетый человек, а на хоккейном поле тепло и защищенный от ударов шайбы. И потому у каждого из этих вратарей будут соответственно разные: свойства, методы, события и т.д. Верно понимаю? Значит использовать вратаря из хоккейного поля ни в коем случае использовать в футбольном поле нельзя, только если его имя и фамилию, к примеру. Так?

8. Манифест - это как общий перечень деталей автомобиля с описанием того, какая деталь от какой зависит. Правильно понимаю?


Подытожу, грубо говоря рефлексия - не что иное как процесс определения параметров объекта в процессе выполнения какой либо процедуры, а параметры заранее не известны.

Жду критики!