?

Log in

No account? Create an account

Previous Entry | Next Entry

Взяла на этот семестр курс по C#. Помню, что брала курс по нему на курсере и запомнился он мне как дружелюбный хороший язык. Сейчас же чувствую себя персонажем в фильме ужасов, когда герой окликает со спины свою любимую девушку/маму/лучшего друга, окликнутый поворачивается и герой видит страшное чудовище/монстра/зомби, которое воет и тянется пообедать свежими мозгами.
Во-первых, этот курс тоже онлайн, потому что колледж не считает нужным предлагать этот курс в реале (по крайней мере, в нынешнем семестре). Во-вторых, женщина-препод, не мудрствуя лукаво и не утруждая себя просто копипастит в модули микрософтовскую документацию и этим ограничивается. В-третьих, скопипастить она умудряется так, что некоторые вещи повторяются, но при этом записи очень бессистемны и messy. Начинаю подозревать, что она не существует и нас обучает наскоро написанный бот. В-четвертых, никаких "Hello world", которыми так любят грешить преподы, никакого постепенного усложнения материала, никакой скидки новичкам (а prerequisites, кстати, нет для этого курса). В-пятых, до объяснений она не опускается, в ходе чего это начинает выглядеть так: You can also convert the string arguments to numeric types by using the Convert class or the Parse method. For example, the following statement converts the string to a long number by using the Parse method:
long num = Int64.Parse(args[0]);
It is also possible to use the C# type long, which aliases Int64:
long num = long.Parse(args[0]);
You can also use the Convert class method ToInt64 to do the same thing:
long num = Convert.ToInt64(s);
Что за аргументы? Что во что мы конвертируем? Зачем мы это делаем? В каких случаях применять Convert, а в каких Parse? Чем они отличаются и как работают? Между прочим, это цитата из второго модуля, первая неделя занятий. И такие перлы от строки к строке. Я даже продраться через ее копипасты не могу - потуплю-потуплю и иду математику делать. Чес-слово, я пытаюсь понять, но вообще не могу. Можете надо мной посмеяться, но у меня воспринимается просто как абракадабра какая-то, я спотыкаюсь на каждом слове, я хочу последовательности...

Value types derive from System.ValueType, which derives from System.Object. Types that derive from System.ValueType have special behavior in the CLR. Value type variables directly contain their values, which means that the memory is allocated inline in whatever context the variable is declared. There is no separate heap allocation or garbage collection overhead for value-type variables.
There are two categories of value types: struct and enum.

The built-in numeric types are structs, and they have properties and methods that you can access

Value types are sealed, which means, for example, that you cannot derive a type from System.Int32, and you cannot define a struct to inherit from any user-defined class or struct because a struct can only inherit from System.ValueType. However, a struct can implement one or more interfaces. You can cast a struct type to an interface type; this causes a boxing operation to wrap the struct inside a reference type object on the managed heap. Boxing operations occur when you pass a value type to a method that takes a System.Object as an input parameter. 

Переведите мне это, пожалуйста, на человеческий? Может, я как-то на голову долбанутая? Но, честно, мне кажется, что если я это вслух начну читать - то максимум, чего я добьюсь - это демона вызову, а понять не смогу.
А зомби, тем временем, неудержимо хочет пообедать моими мозгами, ибо срок для quizz - до воскресенья, а до конца assignment'а - до конца следующей недели

Comments

( 12 comments — Leave a comment )
morfizm
Apr. 16th, 2015 12:13 am (UTC)
Что за аргументы?

Параметры командной строки. Тоже, что sys.argv в Питоне.
Погугли на "command line arguments".
Обычно ты их вводишь в cmd или в Far'е.
В визуальных средах обычно где-то в опциях проекта можно указывать, что ты хочешь передать как аргумент. Но это не удобно, удобнее запускать exe-шник напрямую из Far'а и передавать аргументы оттуда.

Что во что мы конвертируем?

Метод Parse у объекта Int64, очевидно, конвертирует из строки в "себя", в новый объект класса Int64. Он, вероятно, совместим с long, поэтому работает присваивание в long.
Метод ToInt64 у класса Convert, очевидно, делает то же самое, но т.к. он задефинирован в более общем классе convert, то имя метода должно подсказывать, в какой тип конвертируешь.
Ты можешь подвести мышу к слову ToInt64 (внутрь слова) и нажать F1, оно тебе расскажет, что куда конвертируется. Visual Studio рулит тем, что хорошо интегрирована с хелпом.

В каких случаях применять Convert, а в каких Parse?

Чисто интуитивно, я бы считал, что пофиг. Это должны быть эквивалентные методы для одного и того же. Применяй тот вариант, который тебе лучше запомнится.


Переведите мне это, пожалуйста, на человеческий? Может, я как-то на голову долбанутая?

Нет, ты просто ленивая :) Ты знаешь английский достаточно, чтобы перевести 90%. По конкретным терминам задавай вопросы, а по всему тексту не надо эксплуатировать читателей.
morfizm
Apr. 16th, 2015 12:14 am (UTC)
Чисто интуитивно, я бы считал, что пофиг. Это должны быть эквивалентные методы для одного и того же. Применяй тот вариант, который тебе лучше запомнится.

А вообще, конечно, RTFM.
metaller
Apr. 28th, 2015 02:49 am (UTC)
Умение разобраться в том, что незнакомо, но где-то недалеко от знакомого - это то, что отличает инженера (в сапмом широком смысле этого слова) от не-инженера. Как любит говорить мой друг - в интституте учат как учиться.
popye
Apr. 16th, 2015 02:43 am (UTC)
Не знаю, чему тебя дома учат, но это даже не программисту ясро и понятро...
fearless_cat
Apr. 16th, 2015 02:53 am (UTC)
В смысле - чему дома учат?
Ну раз всем понятно - значит, у меня уже размягчение головного мозга. Мне непонятно. То есть, по отдельности каждое слово понятно, но вот сложить в кристальную ясность как-то не получается. Или у нас разное понимание "все понятно"
eternele
Apr. 16th, 2015 07:26 am (UTC)
злые какие комментаторы. у нас было несколько курсов программирования - на уровне, необходимом физику для моделирования, но от вышеприведенных отрывков у меня тоже мозг кипит. всё, что мне удалось вычленить, - они вроде как пытаются объяснить, как связаны разные типы данных. но, имхо, это может быть понятно лишь тому, кто уже знает 90% ответа.
archaicos
Apr. 16th, 2015 01:30 pm (UTC)
Ключевые слова по смыслу:
- type, class, interface, derivation/inheritance, sealing
- type, type conversion/cast, boxing/unboxing/marshalling
- memory management: heap, garbage collection, object lifetime

Гуглить в контексте C#, CLR. И вообще там по ссылкам на самом MSDN можно много чего почитать, не уходя на другие сайты, как я понимаю.

Мне кажется, там чать копипасты просто лишняя и вряд ли нужна для задания. Могу ошибаться, конечно. Но просто выглядит, как будто в кучу свалили много разнообразных знаний об основных типах и объектах этих типов. Конечно, это знать надо в итоге.
l_sylvanas
Apr. 16th, 2015 08:00 pm (UTC)
Это просто терминология языков программирования, к ней со временем привыкаешь. То есть, по идее, пререквизитом тут должен быть курс "языки программирования", где объясняют, как они все устроены.

Мне это очень хорошо знакомо: курсы, которые называются как-нибудь вроде "Introduction to programming in C#", приходишь туда -- а там вот это вот всё. Я тоже этого не люблю. Потому что это не "Introduction to programming", а курс именно о C#, о том, как именно он устроен. На самом же деле можно довольно долго жить и программировать, не вполне представляя себе все эти вещи, а лишь какие-то из них. А спокойно читаться вся эта документация начинает уже с опытом, когда уже годами программируешь на разных языках. То есть, я думаю, что даже курс "языки программирования" на самом деле поможет лишь чуть-чуть.

По-моему, дело часто бывает в том, что зачастую такие курсы составляются для программистов, а не для студентов. То есть для тех, кто и в самом деле годами программирует, и решил вот сходить на курсы повышения квалификации. Ты говоришь, что курс онлайн, это меня сразу навело на мысли. Впрочем, я и очных таких насмотрелась. Туда и приходят вечерники, люди, которые работают в софтверных компаниях. Я среди ни х была, конечно, совершенно белая ворона.

Еще добавлю: мне кажется, большинство курсов, которые лично мне оказывались особенно полезны в плане продвижения вперед, вообще не имели в названии какого-то конкретного языка. Для меня это даже как бы red flag несколько, что ли. Я не встречала ни одного курса, где был бы упор на конкретный язык и который при этом не был бы рассчитан на уже опытных более или менее программистов. Впрочем, это, конечно, не значит, что их нет, вот я слышу отовсюду, что теперь питон очень везде используют, масса курсов, вполне возможно, что в название каких-то из них и вставили слово "питон", но они при этом вполне подходят для студентов :). Но вообще в нашей CSE программе в университете такого курса (где значился бы язык) нет ни единого вообще. И часто просто от преподавателя зависит, требует ли он конкретный язык или нет, и если да, то какой.

Edited at 2015-04-16 08:10 pm (UTC)
ch0sen_0nes
Apr. 18th, 2015 08:09 pm (UTC)
Увы, тут обычная беда преподавателя - он объясняет все это как будто себе, не понимая, что он это уже знает.

С первого взгляда можно предположить, что convert - для чисел другого типа, а parse предполагает анализ, вероятно, пытается вычленить число из строки. Идем в хелп или гуглим методы (и попадаем в хелп).

Так что включай среду разработки и пробуй сама. Пихай во все методы произвольные аргументы, смотри результа, читай мануалы. У MSDN, говорят, хоть с хелпами все нормально, да и язык далеко не вчера появился - оброс коммьюнити, в том числе русскоязычными (хотя я бы их сторонился по мере возможности).

Опять-таки, многие вещи приходят с практикой. Причем, порою когда ты пытаешься сделать что-то не так, идешь на стэковерфлоу, где тебе вместе с практическим ответом подсовывают кусок теории и ты прозреваешь.
Тут, правда, есть шанс нарваться на "индуса", ответ которого заапрувили еще 3 "индуса", в результате чего некоторое время можно пользоваться костылем будучи уверенным, что это true way. Но от этого никто не застрахован.
morfizm
Apr. 21st, 2015 04:08 am (UTC)
+1
c0smopolit
Apr. 26th, 2015 09:46 pm (UTC)
Есть очень хорошие книги, где не "галопом по европам", а всё разжёвано нормально. И всё последовательно.
Вот пример: Andrew Troelsen - Pro C# 2010 and the .NET 4 Platform, 5th Edition 2010
Да, книга очень большая. Но тут надо определиться. Хотите далее кодить на C#? Тогда книжку надо изучить от и до. Попутно выполнять примеры из книги.
Нужно с азов всё впитывать, чтобы понять такое "for example, that you cannot derive a type from System.Int32" и т.д.
К середине изучения книги (возможно ранее) можно решать задачи здесь: www . careercup . com (пробелы убрать в ссылке). И всё получится :) Удачи!
( 12 comments — Leave a comment )

Profile

fearless_cat
Бывшие канадские ангелы мы

Latest Month

November 2017
S M T W T F S
   1234
567891011
12131415161718
19202122232425
2627282930  
Powered by LiveJournal.com
Designed by Tiffany Chow