Должны разработчики.NET *действительно* пребывание в течение времени изучить C для воздействия низкого уровня?

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

Вы получаете эту ошибку здесь, на return decrypt($this->attributes[$key]) в вашей черте EncryptsAttributes.php .

public function getAttributeValue($key) {
    if(in_array($key, $this->getEncrypts())) {
        return decrypt($this->attributes[$key]);
    }
    return parent::getAttributeValue($key);
}

decrypt() не может работать с незашифрованной строкой . Прямо сейчас у вас есть некоторые данные в столбце task, которые не зашифрованы, и эта функция decrypt() пытается расшифровать незашифрованные данные.

Решение этой проблемы заключается в том, что вы либо расшифровываете все существующие данные в столбце task, либо можете обработать их следующим образом: 1114] черта. Я добавил блок try / catch для решения этой проблемы. Если у вас есть данные, которые не зашифрованы, то они просто предоставят вам данные, не пытаясь расшифровать их.

15
задан blowdart 24 September 2008 в 13:57
поделиться

15 ответов

Я уже знаю C, и это помогло мне в течение 1,1 дней, где существует много вещей, которые еще не находятся в библиотеках основы.NET, и у меня есть к P/Invoke что-то с Платформы SDK.

Мое взятие - то, что мы должны всегда выделять время для изучения чего-то, что мы еще не знаем. Для ответа на вопрос я не думаю, что для Вас важно изучить C, но если у Вас есть некоторое свободное время, C является хорошим языком для изучения и так же допустим как любой другой язык там.

6
ответ дан 30 November 2019 в 23:57
поделиться

. СЕТЕВЫЕ разработчики должны узнать о CLR. Но они должны также изучить C. Я не вижу, как кто-либо может действительно понять, как CLR работает без некоторого понимания низкого уровня того, что происходит на чистом металле.

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

то, Что Вы изучаете путем изучения C, будет полезно для остатка от карьеры. То, что Вы узнаете о CLR, станет устаревшим, поскольку Microsoft изменяет их платформу.

4
ответ дан 30 November 2019 в 23:57
поделиться

Конечно, Вы должны. Самый большой способ стать чрезмерно специализированным и целеустремленным (и, соответственно, ограничили рыночные навыки) состоит в том, чтобы только работать с единственным типом языка и сторониться всех других как "не связанный с Вашей текущей задачей".

у Каждого программиста должен быть некоторый опыт с современным языком OO JIT'd (C#/Java), более простым языком низшего уровня (C, ФОРТРАН, и т.д.), интерпретируемый язык очень высокого уровня (Python, Ruby, и т.д.), и функциональным языком (Схема, Lisp, Haskell, и т.д.). Даже если Вы не используете всех их на ежедневной основе, расширение Вашего мыслительного процесса, который предоставляет такое знание, довольно полезно.

35
ответ дан 30 November 2019 в 23:57
поделиться

Правда, C значительно ниже цепочки. Знание MSIL может помочь devs понять, как оптимизировать их приложения лучше. Что касается изучения C или MSIL, почему не оба? :)

5
ответ дан 30 November 2019 в 23:57
поделиться

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

я чувствую, что изучение C является хорошим языком для приобретения знаний о низкоуровневых понятиях без боли кодирования в блоке.

Однако я чувствую, что извлечение уроков из языков как Haskell, Python, и даже возможно regex (не точно язык, но Вы ловите мой дрейф?) так же важно как уроки, которые будут подбираться из C.

, Таким образом, я говорю, узнайте о CLR и MSIL на задании, если это - Ваша область, и в Ваше свободное время, попытайтесь взять другой язык один раз в так часто. Если это, оказывается, C в этом году, хороший для Вас и любит играть с указателями ;)

2
ответ дан 30 November 2019 в 23:57
поделиться

Если бы Вы считаете себя программистом, я сказал бы да, изучил бы C.

Многие люди, которые пишут код, не считают себя программистами. Я пишу приложениям.NET, возможно, 3 часа в день на работе, но я не маркирую меня "программистом". Я делаю много вещей, которые не имеют никакого отношения к программированию.

при пребывании в течение целого дня, программируя или думая о программировании, и Вы собираетесь заставить свою всю карьеру вращаться вокруг программирования, затем Вы лучше быть уверенными, что Вы знаете свой материал. Изучение C, вероятно, помогло бы создать основу знания, которое было бы полезно, если Вы собираетесь пойти очень глубоко в программировании навыков.

Со всем, существуют компромиссы. Чем больше языков Вы учите, и больше времени, которое Вы проводите выделенный технологии, тем меньше времени Вы имеете для того, чтобы освоить другие навыки. Например, было бы лучше изучить C или прочитать книги по управлению проектами? Это зависит от Ваших целей. Вы хотите быть лучшим программистом EVAR? Изучите C. Потратьте написание кода часов и часов и выделение себя к ремеслу. Вы когда-нибудь хотите управлять кем-то еще вместо того, чтобы весь день кодировать? Используйте время, которое Вы поместили бы в программирование и нашли бы способы улучшить свои мягкие навыки.

1
ответ дан 30 November 2019 в 23:57
поделиться

Проблема изучает C или MSIL, или действительно ли это более фундаментально? Я сказал бы, что в целом, больше разработчиков могло выдержать узнать больше, как компьютеры , физический или виртуальный, работают. Человек может добраться, чтобы быть довольно компетентным программистом, только поняв язык и API в поле. Для взятия профессии к следующему уровню я чувствую, что разработчики действительно должны понять целый стек. Не обязательно подробно, но в достаточной общности, чтобы помочь решить проблемы.

о Большом количестве этих навыков говорят, здесь может быть получен путем получения дополнительной информации о компиляторах и дизайне языка. Вероятно, необходимо изучить C, чтобы сделать это (возгласы, подлые), но запись компилятора является большим контекстом для изучения C в. Steve Yegge переговоры об этом на его блоге, и я в основном соглашаюсь с ним по этому вопросу. Мой компилятор, пишущий курс в университете был одним из большей части глаза вводные курсы, которые я когда-либо брал, и мне действительно жаль, что это не были 200 курсов уровня вместо 400 уровней один.

0
ответ дан 30 November 2019 в 23:57
поделиться

Я отправил это на другом потоке, но он применяется здесь к:

я полагаю, что Вы нуждаетесь в хорошей основе, но посвящаете большую часть Вашего времени изучению, что Вы будете использовать.

  • Изучают достаточно ассемблера, чтобы добавить два числа вместе и отобразить результат на консоли. У Вас будет намного лучшее понимание того, что на самом деле продолжает компьютер, и он будет иметь смысл относительно того, почему мы используем двоичный файл/Шестнадцатеричное число. (это может быть сделано через день и может быть сделано с отладка из cmd.exe ).
  • Изучают достаточно C для выделения некоторой памяти и указателей использования. Простое связанный список достаточно. (это может быть сделано через день или два).
  • Проводят больше времени, уча язык, который Вы собираетесь использовать. Я позволил бы Вашим интересам направить Вас в который язык (C#, Java, Ruby, Python, и т.д.).
0
ответ дан 30 November 2019 в 23:57
поделиться

CLR виртуальный машина поэтому, если это - все, что Вы изучаете, затем Вы только знаете то, что происходит на виртуальном уровне.

Изучение C будет учить Вас больше физический машина насколько использование памяти идет, который, как Вы упоминаете, является тем, что CLR использует внизу. Изучение, как CLR работает, не собирается давать Вам столько же понимания, скажем, сборки "мусора", сколько изучение C. С C Вы действительно цените то, что вовлечено в управление памятью.

Изучение CIL, с другой стороны, говорит Вам немного больше о выполнении в.NET, чем Вы были бы путем изучения C. Однако, как карты IL на машинный язык все еще будут тайной, по большей части настолько знающей, что некоторые высокоуровневые коды операций, как те для кастинга типов, не настолько полезны с точки зрения понимания, что действительно продолжается, поскольку они непрозрачны по большей части. При изучении C и указатели, однако, просветят Вас на некоторых из тех аспектов.

0
ответ дан 30 November 2019 в 23:57
поделиться

Я не вижу оснований, почему они должны. Языки как Java и C# были разработаны так, чтобы Вы не волновались о деталях низкого уровня. Это - то же как выяснение, должен ли разработчик WinForms провести время, изучая API Win32, потому что это - то, что происходит внизу.

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

2
ответ дан 30 November 2019 в 23:57
поделиться

Разработчики .NET должны изучать C? Я сказал бы "не обязательно", но мы должны всегда баловаться некоторым языком за пределами нашей профессиональной сферы компетенции, потому что каждый язык приносит с ним новый образ мыслей о проблемах. Во время моей профессиональной карьеры как .NET (и перед этим, VB 2-6) разработчик, я записал маленькие проекты в Паскале, LISP, C, C++, PHP, JavaScript, Ruby и Python, и в настоящее время балуюсь Lua и Perl.

Кроме C++, я не перечисляю ни одного из них на моем резюме, потому что я не надеюсь быть профессионалом в любом из них. Вместо этого я возвращаю интересные идеи от каждого из них для использования в моей основанной на.NET работе.

C интересен в этом, это действительно получает Вас близко к ОС, но это - едва единственный уровень, который необходимо знать собирающийся быть хорошим программистом.

1
ответ дан 30 November 2019 в 23:57
поделиться

Это не может быть плохая идея изучить MSIL, но способом это - просто другой язык.NET, но с противным синтаксисом. Это - другой слой вниз, тем не менее, и я думаю, что у людей должно быть по крайней мере некоторое неопределенное понимание всех слоев.

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

И от другого конца, я думаю, что все должны знать, что немного что-то как Haskell или Lisp понимает высокоуровневый материал (и видит некоторые идеи, представляемые в C# 3 в более чистой форме)

1
ответ дан 30 November 2019 в 23:57
поделиться

Я думаю о нем как это:

  1. Программисты должны, вероятно, быть на самом деле работа на соответствующем языке высшего уровня. То, что является соответствующим, зависит от Вашего сценария. Драйвер устройства или встроенная система находятся в другом классе из настольного приложения CRUD или веб-страницы.
  2. Вы хотите, чтобы у Ваших программистов было как можно больше практики на языке, на котором они работают.
  3. , Так как большинство программистов заканчивает тем, что работало над универсальными настольными приложениями и веб-приложениями, Вы хотите программировать студентов для перемещения на высокоуровневые языки как можно скорее во время школы.
  4. Однако высокоуровневые языки запутывают несколько основных проблем программирования, как указатели. Если мы применяем наш принцип использования, что соответствует студентам также, те высокоуровневые языки не могут подходить для студентов первого курса. Это выводит Java, .NET, Python и многих других.
  5. , Таким образом, студенты должны использовать C (или еще лучше: C++, так как это является "высокоуровневым" и покрывает большинство тех же понятий) в течение первого года или двух из школы, чтобы покрыть фундаментальные понятия, но быстро переместиться до высокоуровневого языка для включения более трудных программ ранее.
3
ответ дан 30 November 2019 в 23:57
поделиться

Мое взятие - то, что изучение некоторого скомпилированного языка и блока , должен . Без этого Вы не потребуете, чтобы универсальность переключилась между языками и стеками.

, Чтобы быть более конкретным - я думаю, что любой хороший/большой программист должен знать эти вещи по прямому опыту:

  • , Каково различие между регистром и переменной?
  • , Что такое DMA?
  • , Как пиксель поставился экран (на низком уровне)?
  • , Что такое прерывания?
  • ...

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

Для обращения к некоторым комментариям

Вы заканчиваете тем, что имели два различных видов разработчиков:

  • люди, которые могут сделать одну вещь 10 способами на одном или двух языках
  • люди, которые могут сделать одну вещь одним или двумя способами на 10 различных языках

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

3
ответ дан 30 November 2019 в 23:57
поделиться

Чтобы быть достаточно продвинутым в написании C #, вам необходимо понимать концепции C, даже если вы не изучаете язык как следует.

В более общем плане, если вы серьезно Что касается любого навыка, вы должны знать, что происходит хотя бы на одном уровне абстракции ниже вашего основного рабочего уровня.

  • Кодирование в jQuery должно сочетаться с пониманием JavaScript
  • Для проектирования схем необходимо знать физику

    • 1227] Любой хороший баскетболист узнает о мышцах, костях и питании
    • Скрипач узнает о взаимодействии канифоли, трения, волос смычка, струны и сухости дерева
3
ответ дан 30 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: