Тривалі, неправильні припущення щодо програмування [закрито]


281

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

Яке ваше найдовше припущення було згодом виправлено?

Наприклад, я неправильно зрозумів, що розмір цілого числа не є стандартним, а натомість залежить від мови та цілі. Трохи соромно заявляти, але це так.

Будь відвертим; яка тверда віра у вас була, і приблизно, як довго ви зберігали припущення? Це може бути алгоритм, мова, концепція програмування, тестування або що-небудь ще про програмування, мови програмування або інформатики.


Відповіді:


545

Довгий час я припускав, що всі інші володіють цим супер оволодінням усіма програмами програмування (шаблони дизайну, новітня нова мова, складність обчислень, лямбда-вирази, ви це називаєте).

Читання блогів, переповнення стека та книги програмування завжди, здавалося, змусило мене відчути, що я за кривою речей, які всі програмісти повинні просто інтуїтивно знати.

З часом я зрозумів, що ефективно порівнюю свої знання з колективними знаннями багатьох людей, а не однієї людини, і це досить висока планка для будь-кого. Більшість програмістів у реальному світі мають кеш-пам'ять знань, необхідних для виконання своєї роботи, і мають більше кількох областей, про які вони слабкі або зовсім не знають.


68
Такий справжній! Ось проблема цього віку. Інформація також відлякує. Це одкровення у мене було кілька тижнів тому, коли я відчував себе повною програшкою у всьому, що робив (не вперше) щодо досліджень. Хлопці, які публікують свої документи в транзакціях IEEE, не обов'язково володіють тими ж навичками, як хлопці, які працюють в Google, хвастаються в StackOverflow, чудовими професорами або пишуть чудові блоги програмування. Звичайно, кращі хлопці експоненціально крутіші, ніж ми, але вони не знають всього, що ти знаєш, чого ти не знаєш. Отже, будьте круті.
jbasko

40
Це також допомагає зрозуміти, що ці блогери теж не пишуть все вгорі. Хороші блогери досліджують свої теми та дізнаються нові речі під час написання дописів.
JohnFx

47
Я щодня одержимо речі, про які я не встигаю читати та дізнаватися. Іноді це залишає у мене жахливе почуття провини.
брад

9
@Zilupe: Амінь до цього. Я опублікував декілька доповідей та журналів міжнародних конференцій. В очах деяких людей це звучало круто. Поки ви не зрозуміли, що насправді не потрібно багато зусиль, щоб опублікувати документ. Ми не геній. Ми так само, як і всі. Ми помилялися, і публікуємо лайні папери. Ну, за винятком якоїсь
меншої

4
+1 Добре, що я це прочитав. Я думав, що я єдиний.
Ренделл

308

Щоб люди знали, чого хочуть.

Найдовше я думав, що буду спілкуватися з людьми, вони описують проблему чи робочий процес, і я вкладу її в код і автоматизую її. Виявляється кожен раз, коли це відбувається, те, що вони думали, що хочуть, насправді не те, що вони хотіли.

Редагувати: Я згоден з більшістю коментарів. Це не технічна відповідь і, можливо, не те, що шукав запитуючий. Це не стосується лише програмування. Я впевнений, що це не моє найдовше припущення, але це було найяскравіше, що я дізнався за 10 коротких років, якими я займався. Я впевнений, що з мого боку це було чисто наївністю, але те, як мій мозок / був провідним, і навчання та досвід, який я мав до вступу в діловий світ, змусили мене повірити, що я буду робити те, на що відповів; що я міг би використовувати код та комп’ютери для вирішення проблем людей.

Я думаю, що ця відповідь схожа на Робін про те, що непрограмісти розуміють / дбають про те, про що я говорю. Йдеться про вивчення бізнесу як спритного, ітеративного, інтерактивного процесу. Йдеться про те, щоб дізнатися відмінність між програмою-кодом-мавпою та розробником програмного забезпечення. Йдеться про усвідомлення того, що між ними є різниця, і щоб бути справді хорошим у цій галузі, це не просто синтаксис та швидкість набору тексту.

Редагувати: Ця відповідь тепер є вікі-спільнотою, щоб заспокоїти людей, засмучених у цій відповіді, даючи мені реп.


9
Або змінити те, що вони хочуть, побачивши те, що раніше хотіли. Люди люблять передумати. Я знаю, бо я народ.
Дж. Полфер

13
Ви давали їм те, що вони просили, а не те, що вони хотіли.
Brent Baisley

47
Чому нудні непереборні відповіді не надто швидко проголосуються ?!
nes1983

39
Ого. Здається, що комусь потрібно обійняти.
bzlm

24
Мій бог @ люди, які скаржаться, stackoverflow представник не є конкуренцією. Оновіть, якщо вам сподобалася відповідь, не зволікайте, оскільки ви ревнуєте, що ви її не опублікували першою.
Дмитро Фарков

292

Це я знаю, де проблема продуктивності без профілювання


10
Я думаю, саме тому передчасна оптимізація є таким поширеним місцем.
Hao Wooi Lim

10
+1 Ого, хтось включив відповідь, яка не була тривіальною чи поза темою.
Марк Роджерс

3
У мене є кілька планшетів, які повинні допомогти передчасної оптимізації ...
AndyM

232

Що я повинен мати лише одну точку виходу з функції / методу.


91
Відмінна реалізація; виїжджайте так часто, як це необхідно. Виконувати функцію слід, як тільки немає сенсу продовжувати її виконувати. Це може зменшити складність та збільшити читабельність, наприклад, уникаючи глибоко вкладених умов, коли вони є необхідними умовами, необхідними для належного виконання методу. У сучасних мовах з управлінням пам’яттю та конструкціями ресурсів на кшталт використання / нарешті, продовжувати весь шлях до кінця методу догматично немає сенсу.
Трайнко

24
Хто придумав це, до речі? Це як програмна міська легенда.
брад

49
Люди, яким доводиться налагоджувати код інших людей, - це хто придумав.
gatorfax

23
Я думаю, що ця загальноприйнята, але неправильна ідея заснована на непорозумінні. Коли ви виходите з функції, ви завжди повинні повертатися до тієї ж точки. Це було важливим правилом у таких мовах, як BASIC, які не застосовували його: правило означало, наприклад, що ви повинні використовувати GOSUB замість GOTO. У таких мовах, як C # або Java, які використовують методи виклику, це автоматично. Але оскільки він автоматичний, я думаю, що він перетворився від логічної "лише однієї точки повернення" до безглуздої "лише однієї точки виходу".
Райан Лунді

35
З мов, таких як C, де вам потрібно вручну випускати ресурси. Кілька пунктів виходу - хороший шанс для витоку ресурсів. IMO не має сенсу в мовах за винятками, оскільки ви часто вже не знаєте своїх точок виходу або знаходяться в середині заяви. - У цих мовах все, що залишається, - це "структура для читабельності".
peterchen

228

Щоб непрограмісти розуміли, про що я говорю.


243
зрозуміти / піклуватися ..
nickf

8
У мене все ще є час від часу ... Я думав, щонайменше моя дружина вже зараз би почала правильно розуміти: P
workmad3

3
О, дорогий, я боюся, що я, можливо, ще буду цього вивчити!
thatismatt

3
так, іноді я забуваю свою аудиторію і закінчую купою людей, які порожні погляди на їх обличчя дивляться на мене, приємно, коли люди проявляють інтерес, хоча
Petey B

3
Це моє найбільше розчарування професією.
Андрес Яан Так

219

Це програмне забезпечення без помилок було можливим.


35
+1, хоча NASA майже впоралася з цим
Патрік Макдональд

55
Так, але "майже" коштувало декількох мільйонів доларів :)
Джем

15
@Triynko ваші "можливі" та "можливі" ДжаредаПара - не те саме. Теорія і практика можуть бути однаковими в теорії, але сильно відрізняються на практиці.
wilhelmtell

13
@ Джозеф, частина проблеми полягає в тому, що люди думають, що програми Hello World безкоштовні. Їх немає. Більшість не перевіряють на наявність помилок у printf, наприклад, або в обліковому записі на інші невдалі спроби вводу-виводу.
JaredPar

9
@RussellH, ні. Вам не вдалося вказати повернене значення, і в результаті процес поверне випадкову пам’ять сміття.
JaredPar

199

Змінні приватного члена були приватними для екземпляра, а не для класу.


192
Я дотримувався цього припущення до… просто зараз.
TheMissingLINQ

9
@ebrown Я зазвичай вважаю корисним лише при написанні методу equals ()
Дейв Вебб

12
Вони в Рубі.
Майк Кучера

17
Для мене це настільки нормально, що ця відповідь не мала сенсу перші кілька разів, коли я її прочитав. Тепер я хочу навчитися Рубі, щоб це могло переплутати мене в інший спосіб. :)
jmucchiello

16
@Kiewic Якщо у вас в класі є приватна змінна особа під назвою myVar, ви можете посилатися на other.myVar безпосередньо у своєму коді, якщо інший є примірником цього класу. Я припускав, що це "приватне", що вам доведеться використовувати other.getMyVar () навіть усередині класу.
Дейв Вебб

166

Я думав, що статичний набір тексту дуже сидить біля вашої клавіатури.


53
Щирий чи ні, це змусило мене сміятися в кінці довгого робочого дня. : P
Олів'є Тремблей

5
++ для гарного сміху. звучить так, як щось мій (нетехнічний) чоловік придумав би.
Джесс

11
+1! Я думав, що качка вводить і те, і друк. Або качок. Або і те й інше.
SqlACID

162

Щоб ви могли повністю зрозуміти проблему, перш ніж розпочати розробку.


32
Це, мій друже, має бути таким: "Щоб ви могли повністю зрозуміти проблему". Але це так правда. І apparnetly важке поняття, щоб зрозуміти або навіть прийняти.
KarlP

4
Ви не можете зрозуміти проблему "повною мірою", але, безумовно, ОБОВ'ЯЗКОВО зрозуміти проблему (певною мірою), перш ніж розпочати розробку. bit.ly/kLXgL
OscarRyz

Іноді доводиться починати розробку, щоб зрозуміти проблему. І / або проблема змінюється тим більше, як ви розвиваєтесь.
Еван Плейс

158

Розумні люди завжди розумніші за мене.

Я справді можу перемогти себе, коли роблю помилки і часто отримую відмову від себе. Раніше я з побоюванням дивився на багато розробників і часто припускав, що оскільки вони знають більше, ніж я на X , вони знають більше, ніж я.

Оскільки я продовжував набиратися досвіду і зустрічатися з більшою кількістю людей, я почав розуміти, що часто, хоча вони знають більше, ніж я в певній темі, вони не обов'язково розумніші за мене / вас.

Мораль історії: Ніколи не варто недооцінювати те, що можна подати до столу.


Хороший! В даний час я працюю з колегою, який дійсно знає ЛОГО про розробку .NET. Знадобилося трохи часу, щоб зрозуміти, що я краще розумію, що потрібно клієнтам.
Треб

58
А з іншого боку, що я знаю більше, ніж інших людей. Виявляється, вони просто знають різні речі. Інша мораль: Ніколи не варто недооцінювати те, що хтось інший може подати до столу.
четверггек

1
Ось ця старенька річ "Робіть іншим" знову ... Я придумую нову фразу: Tech bulying ~ Стан почуття переваги, тому що ви знаєте деякі речі, і помиляєтесь, коли всі інші знають це. @seealso: smartass.
corlettk

1
Відмінне спостереження - моя версія є більш негативною: "Всі роблять дурні раз у раз". Дещо пов'язане з "не переверніть біт бозо".
peterchen

2
Вам потрібно хвилюватися лише тоді, коли дурні люди, розумніші за вас.
Бред Гілберт

131

Тривалий час я думав, що Погане програмування - це те, що траплялося на межі. Це правильна робота - норма. Я сьогодні не такий наївний.


30
Раніше я вважав, що Погане програмування робилося лише іншими програмістами, поки мене не зробила одна з моїх поганих програм. Тепер я все роблю правильно! (Ви мені цього разу повірите, правда?)
Джаред Апддік,

2
Повністю. Я перейшов від "Що ніколи не буває" до "Це ніколи не трапляється, крім цієї роботи", до "У кожному місці є поганий код".
Райан Лунді

1
Злом - норма. Інжиніринг - це сфера справді компетенції. Якщо коли-небудь зустрінуться з інженером-програмістом, я повідомлю вас.
corlettk

3
@corlettk: Ви маєте на увазі кодування мавп - це норма, ні? Хакерство - це мистецтво, це високий рівень мистецтва, який ви пам'ятаєте, що мені далеко від досягнення.
hasen

2
@Hasen: Ні, хакерство - це аналогія невміло брати сокиру до дерева, відбивати крихітні шматочки в шаленій паніці без реального плану і створювати кривавий великий безлад, поки дерево нарешті не впаде на вашу голову. "Злом" - це "той, хто виробляє банальну і посередню роботу в надії на досягнення комерційного успіху". Чому саме комп’ютерне поле змінило "хак" на "кваліфікований", я ніколи не дізнаюся.
Лоуренс Дол

113

Я думав, що мені слід рухатись до реферату якомога більше. З цим я потрапив у головний майор через занадто багато переплетених маленьких шматочків функціональності.

Зараз я намагаюся тримати речі максимально простими та нерозбірними. Рефакторинг зробити щось абстрактне набагато простіше, ніж передбачити, як мені потрібно щось абстрагувати.

Таким чином я перейшов від розробки основи, яка правила їх усіх, до фрагментів функціональності, які дозволяють виконати роботу. Ніколи не оглядався, за винятком випадків, коли я замислювався про час, коли я наївно думав, що буду саме тим, хто розвиває наступну велику річ.


26
Розв’язаний = справжня абстракція. Анотація заради себе - це ... передчасна оптимізація.
Джаред Updike

1
Це йде разом із тим, що я виявив, що робив налаштування продуктивності. Тут може бути чудова програма з декількома шарами абстракції. Тоді навантаження набуває великої ваги, і здогадайтесь, що коштує весь час ... всі абстракції. Комп'ютери виконують інструкції, а не абстракції.
Майк Данлаве

5
Абстракція та узагальнення - це потужний інструмент, який, на жаль, використовується для узагальнення абстрактного випадку використання з єдиною реалізацією. Найсмішніше те, що коли виникає потреба змінити реалізацію, абстракції та узагальнення також повинні змінитися ...
KarlP

Я повністю погоджуюся з Джаредом ... якщо вам вдалося дістатися до "простого і зв'язаного", ви домоглися справжньої абстракції. Як можна роз'єднати речі, якщо ви не абстрагували речі в інтерфейсах і на фабриках тощо ...? Як це може бути простим, якщо ви не видалите все "if type = this then do this, or if the type is then to else something code"?
Річард Ентоні Хайн

Те ж саме. Я думаю, що я дізнався про абстракцію перед тим, як зробити цілу партію коду спагетті. Вони повинні були навчити, як це зробити, навіть якщо код - спагетті, а потім навчити нас про ОО та абстракцію.
hasen

103

Що жінки вважають комп'ютерних програмістів сексуальними ...


70
Почекайте секунду???
Çağdaş Tekin

4
he he he he .. гаразд, я шукав щось, щоб зберегти усмішку на весь день. Я думаю, що я знайшов його !!! :)
OscarRyz

17
"О, дитино! Так, скажи" якщо "- кинь мені деякі винятки. Так, ти знаєш, як я цього хочу": P
обмінятись

5
Що? Програмісти багаті? Коли це сталося?
Філіп Навара

3
Деякі жінки (правильний вид) приваблюють проникливих розумних хлопців. Що, за винятком прототипічної шиї та ковбаси-кишки, є досить поширеними рисами програмістів. Посипте трохи турботи про власне зображення / гігієну та епізодичне хвилювання / захоплення екстремальними видами спорту, і ви добре рухаєтесь.
Еван Плейс

100

Що якість програмного забезпечення призведе до збільшення продажів. Іноді так, але не завжди.


37
Продаж програмного забезпечення? Ось так 1999.
bzlm

Зараз багато рекламних веб-сайтів, що базуються на підписці ...
cgp

11
Microsoft впевнений, що робить це вбивство.
Білл Мартін

треба любити цього, так правдиво.
д-р. зло

18
Хочеться, щоб покращення якості / продуктивності нашого програмного забезпечення вважалося особливістю
Том Лейз,

82

Щоб усі мови були (переважно) створені рівними.

Досить довго я вважав, що мова вибору насправді не має великого значення у складності процесу розробки та потенціалі успіху проекту. Це точно не відповідає дійсності.

Вибір правильної мови для роботи є настільки ж важливим / критичним, як і будь-яке інше рішення, яке приймається окремим проектом.


13
Я відчуваю, що важливим є вибір правильних бібліотек. Просто так трапляється, що між мовами та бібліотеками часто листується "1 на 1" ...
Кевін Монтроуз

7
Але якщо дві мови програмування обидва Тюрінга завершені, то яка різниця? Ви можете написати будь-яку програму на будь-якій мові! ;)
Білл Ящірка

8
Я не згоден, рішення, якою мовою користуватися, є менш важливим, ніж хто насправді буде реалізовувати проект. Як лише один приклад багатьох інших важливіших рішень.
Борис Терзич

13
BrainFu ** настільки ж завершений, як і пітон.
hasen

9
Те, що цілісні мови Тюрінга якось однаково застосовні, є поширеною помилковою думкою. Повна мова Тьюрінга може обчислити все, що може зробити машина Тьюрінга (а також часто мається на увазі і навпаки). Немає жодних наслідків щодо продуктивності. Операція, яка займає лінійний час однією мовою, може дуже швидко зайняти іншу, і вони все ще можуть бути завершеними Тьюрінгом. Існує величезна різниця між тим, що теоретично можна обчислити, і тим, що можливо на практиці.
TrayMan

81

Це велике співвідношення коментарів / коду - це добре.

Мені знадобився певний час, щоб зрозуміти, що код повинен бути самодокументуванням. Звичайно, коментар тут і є корисним, якщо код не можна зробити яснішим або якщо є важлива причина, чому щось робиться. Але в цілому краще витратити цей час коментаря на перейменування змінних. Це чистіше, чіткіше, і коментарі не виходять із синхронізації з кодом.


1
Я погоджуюсь у фактичному коді ... виключаючи коментарі javadoc (або еквівалент).
corlettk

11
+1, навіть не запускай мене з трактатів, які я писав для 10-ти лінійних функцій
wds

Щоб додати до цього, твердження assert () краще, ніж документування передумови / постумови. Код контрактів .NET 4 теж може бути автоматично перетворений у документацію!
Роберт Фрейзер

66

Та програмування неможливо.

Не жартую, я завжди вважав, що програмування неможливо навчитися, і я завжди тримався осторонь цього. І коли я наблизився до коду, я ніколи не міг його зрозуміти.

Потім одного дня я просто сів і прочитав кілька основних навчальних посібників для початківців і пропрацював там шлях. І сьогодні я працюю програмістом і люблю кожну його хвилину.

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


7
Амінь! Але, ей, не проголошуй цей погляд з дахів. Ми не хочемо, щоб усі знали, що програмування - це цікаво? ;); P
Петро Пергач

9
MasterPeter: Це дало б нам більше кормів для того, щоб збільшити кількість представників, коли вони прийдуть сюди, задаючи питання.
TheTXI

4
Я хотів би сказати , що програмування це важко зробити прямо . Це, однак, можливо, що, здається, є вашим питанням.
Стів S

4
@Olafur: Чому ви хочете, щоб питання було вікі, а не вашою відповіддю?
gnovice

2
Це точно відображає мій досвід. Я б хотів, щоб я почав раніше: P
Skilldrick

65

"On Error Resume Next" - це якась обробка помилок


6
Я відчуваю, що ви ... але в vbscript (esp. Asp) доступний був ТІЛЬКИ варіант "поводження з помилками", поєднаний з розумною перевіркою, чи помилка насправді сталася, і великою кількістю молитви.
рівна лінія

2
Так ... це якийсь вид ... просто такий, від якого ми раді втекти
Метью Уайд

6
Ну?! але це. Ви запускаєте блок керування помилками із пункту On Error Resume Next, спробуйте щось, а потім якщо (помилка номера <> 0), то
jpinto3912

Це не єдиний vbscript, еквівалентний спробі лову?
Джеймс

-1: Це свого роду помилка. Це просто не так елегантно.
JohnFx

64

Це програмне забезпечення програмування вимагає міцної основи у вищій математиці.

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

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


5
Дуже правильно. У більшості випадків вам не потрібно бути експертом з математики. Єдиний раз, коли мені справді потрібно було знати будь-яку вдосконалену математику, коли я займався програмуванням 3D як хобі. Насправді саме 3D програмування в середній школі надихнуло мене приділяти більше уваги в класах тріг і до кал. Окрім цього, все, що вам потрібно, дуже проста математика.
Стів Вортем

29
Я думаю, ви були дезінформованими. Впевнений, щоб бути хорошим програмістом , вам не потрібно використовувати математику набагато вищого рівня, але для того, щоб по-справжньому зрозуміти та застосувати певні концепції інформатики, вам знадобиться більше, ніж лише восьмий клас математики.
hbw

12
Я думаю, що акцент на математиці полягає в тому, щоб навчити навичкам критичного мислення та вирішувати проблеми не як те, що ви використовували б у щоденному комп'ютерному програмуванні.
Зак

14
Вид абстракції, який вам потрібен для розуміння передової математики, дуже схожий на абстракцію, необхідну для створення програмного забезпечення.
OscarRyz

6
Я думаю, що поняття функціонального програмування зрозуміти набагато простіше, якщо у вас є міцніший фундамент математики, просто тому, що вас сильно не лякає синтаксис. Це виглядає знайомо. Я допустив помилку, використовуючи прості математичні функції для демонстрації концепцій функціонального програмування, нових для C #. Деякі люди одразу заявили, що це занадто складно.
Річард Ентоні Хайн

63

Це оптимізація == переписування мовою складання.

Коли я вперше зрозумів збірку (що походить від BASIC), здавалося, що єдиний спосіб зробити швидший запуск коду - це переписати його в збірку. Знадобилося досить багато років, щоб зрозуміти, що компілятори можуть бути дуже хорошими в оптимізації, і особливо з процесорами з прогнозуванням галузей тощо. Вони, ймовірно, можуть зробити кращу роботу, ніж людина може зробити за розумну кількість часу. Крім того, що витратити час на оптимізацію алгоритму, ймовірно, принесе вам кращу виграш, ніж витратити час на перетворення з мови високого на низький рівень. Крім того, що передчасна оптимізація є коренем усього зла ...


8
Пік і Пок - твої друзі :)
Метью Біл

4
Перекрут! Скажи це судді!
Шалом Креймер

1
Тут складається теорія складності. Збірка - це, як правило, мікрооптимізація. Зменшення часової складності ваших алгоритмів полягає в тому, де швидкість набирається.
PeteT

@scraimer: Фантазії бачити вас тут, я ніколи цього не очікував би ;-)
Роберт С. Барнс

@ Меттью - "Пік і Пок - твої друзі :)": ** НАЙКРАЙНО ревно. Я цього не писав першим.
FastAl

63
  • Щоб керівники компанії дбали про якість коду.
  • Чим менше рядків, тим краще.

2
їм все одно, але ви повинні поєднувати майстерність художника з роботою. Кожен твір алгоритму теж не може бути витвором мистецтва. Деякі з них будуть розпущеними, тому повторно використовуйте "менш вживані". Згадайте старе правило 80/20. 80% програми використовується 20% часу. Тож зосередьтесь на 80% на 20% коду і зробіть цей СУЧАСНИЙ ПІК СТАТТЯ! : OP
BerggreenDK

71
менше ліній краще! Частина причини, по якій я не люблю Java як мову, полягає в тому, що робити все, що потрібно, займає стільки рядків коду. менше рядків коду означає, що простіше змінити код.
Клавдіу

7
Це залежить від того, що ви видаляєте, щоб отримати менше рядків. Якщо код все ще читається з меншою кількістю рядків, то це добре. Однак існує маса способів зменшити кількість рядків коду, які погіршують код.
Герм

2
За винятком випадків, коли люди сприймають ментальність "менше ліній краще" з ланцюговим методом викликує 7 глибин, так що коли хтось із них кидає нульовий вказівник, ви не знаєте, що це було. Або вони конденсують стільки дій в один рядок, що це 150 символів і виконує 4 операції. Це робить і важче читати, і важче налагоджувати, але не швидше і не використовує менше пам'яті під час виконання.
Трампас Кірк

17
Якщо ваш рядок закінчується на))))) і ви не пишете Lisp, у вас занадто мало рядків.

58

Я б сказав, що зберігання елементу року у вигляді двох цифр було припущенням, яке вразило ціле покоління розробників. Гроші, які видували на Y2K, були досить жахливими.


1
Це єдина відповідь, яку я підтримаю, хоча це CW, тому це не має значення ...
Dan Rosenstark

4
IIRC деякі системи ще в 60-х, а може, і 70-х роках використовували лише одну цифру, оскільки вона мала менше пам'яті. Я навіть бачив паперові форми, де передруковано "196_" та "197_".
десь

3
Я все ще бачу форми з 200_ і, мабуть, зараз є деякі з надрукованими 201_.
Мача

5
Сумна частина ... Unix проведе свій другий раунд в цьому 2038 році
Еван Плейс

4
@Billy Тільки тому, що змінюється архітектура машини, це не означає, що формат даних буде. Зберігання двох цифр роздільної здатності у форматі int дозволило б створити байт (8-бітовий) формат дати, але, тим не менше, це вплинуло на тонни 32-бітових апаратних архітектурних машин у 2 к. Це лише ще один приклад того, чому ви не дозволяєте хлопцям з низького рівня вказувати формати даних. Вони копійки стискають шматочки, знаючи, що в далекому майбутньому буде запланований SNAFU.
Еван Плейс

57

Що-небудь, крім вставки / міхура, було досить просто темною магією.


Ха-ха, мені це подобається, як він потрапляє близько до дому. Сортувати швидше, ніж n-квадратний час ?? Неможливо!
Росс

Дивовижно, як здаються найпростішими і очевидними найбільш алгоритми сортування, коли у вас є сильне відчуття до рекурсії, розділення та перемоги. До цього більшість із них відчуває себе чорною магією.
Брайан

74
Я ДОСЛІДНИК у алгоритмах сортування! І вони ЩО відчувають себе як темна магія.
SPWorley

14
Колись у моїй програмі був рядок коду, який був довгим і складним, і мені не здавалося, що його порушують або пояснюють (це була якась складна формула освітлення), тому я поставив все це в один рядок і #define ' d це було б DARK_MAGICK, і єдиним коментарем було застереження проти спроб розгадати таємниці темної маги
Алекс

2
Богосор - найзагадковіший з усіх.
Алекс Бердслі

50

Цей XML був би справді сумісним та зрозумілим для людини форматом даних.


7
XML не є панацеєю, але я не хотів би повертатися до тих днів, коли я регулярно бачив програми, які намагаються видавити реляційні дані в єдині файли csv.
Тоні Еджкомб

4
його взаємодіючий синтаксис, у цьому немає жодних сумнівів. Саме цей синтаксис часто є найменш важливим аспектом будь-якого рішення.
Саймон Гіббс

2
+1, ви також можете додавати невеликі та швидкі до списку бажань.
MarkJ

1
Правда, але поліпшення в порівнянні з csv та фіксованою довжиною, коли без документації ви вкручуються.
PeteT

7
Мені подобається XML за стандартизацію, яку він надходить до форматів даних, і за правильну обробку кодувань символів. Я ненавиджу те, що іноді робиться за допомогою XML.
Йоахім Зауер

48

Цей C ++ був якось внутрішньо кращим, ніж усі інші мови.

Це я отримав від друга на пару років попереду мене в коледжі. Я тримав його при собі тривожно довго (я зараз червонію). Це було лише після того, як я працював з ним протягом 2 років або близько того, перш ніж я міг побачити тріщини, якими вони були.

Ніхто - і нічого - не ідеальний, завжди є можливість для вдосконалення.


5
"краще" принесе вам тонни менш ненависних коментарів. Але я б сказав, що це одна з найбільш швидко виконуваних, гнучка, без перешкод. Це також те, що потребує молодості, щоб правильно її вивчити, тільки щоб знайти, ви могли б зробити більш-менш те саме додаток. (хоч і потребує зайвих тонн або двох електроенергії, що виробляє вугілля) з java або C #.
jpinto3912

@JP: Я задоволений своїм вибором слів :)
Бінарний страшник

Продуктивність має більше значення у світі бізнес-додатків. Звичайно, є деякі ніші, для яких потрібен c ++, і єдиний варіант.
Шоу

7
Я завжди вважав, що C ++ гірший, ніж прямий ANSI C, просто тому, що проблема, з якою я бачив програмістів на C ++, є набагато складнішою, ніж проблема, з якою я стикався з програмістами C.
Nosredna

1
Власне, мова, яка краща за всі інші, - це звичайний Lisp. Хоча C ++ не поганий.
Девід Торнлі

47

Я вважав, що створення програм буде точно таким, як викладали на уроці ... ти сідаєш з групою людей, перебираєш проблему, придумуєш рішення тощо. Натомість реальний світ "Ось це моя проблема, я потребую її вирішення, ідіть ", і через десять хвилин ви отримаєте інший, не залишаючи у вас реального часу для ефективного планування свого рішення.


24
Я думаю, що це називається життям.
День Робіна

9
хммм .. настав час вирятувати цю компанію. ..
jpinto3912

8
@ jpinto3912: Ні. Тому що наступна компанія також буде частиною життя (див. попередній коментар).
Треб

42

Я вважав, що основні шаблони дизайну були приголомшливими, коли вони були представлені в класі CS. До цього я програмував близько 8 років як хобі, і я насправді не мав чіткого розуміння того, як створити хороші абстракції.

Дизайнерські візерунки відчували себе магічними; ви могли б зробити дійсно акуратні речі. Пізніше я виявив функціональне програмування (через Mozart / Oz, OCaml, пізніше Scala, Haskell і Clojure), а потім зрозумів, що багато зразків - це просто котельня чи додаткова складність, оскільки мова була недостатньо виразною.

Звичайно, майже завжди існують якісь зразки, але вони є на вищому рівні в експресивних мовах. Зараз я займаюся професійним кодуванням на Java, і я справді відчуваю біль, коли мені доводиться використовувати конвенції, такі як шаблон відвідувачів або команд, замість відповідності шаблонів і функцій вищого порядку.


"багато з моделей були лише котельними плитами чи додатковою складністю, оскільки мова була недостатньо виразною". Виразність - це просто кодовий код, вбудований у мову.
Невідомо

4
Неправда, як на шаблоні мати першокласні речі замість обмеження можливостей програміста, як у випадку функцій вищого порядку. Ліпси - прекрасний приклад цього.
egaga

38

Перші кілька років, коли я програмував, я не спіймав, що 1 Кбайт технічно становить 1024 байта, а не 1000. Мене завжди трохи здивувало те, що розміри моїх файлів даних здавалися дещо від того, що я очікував від них бути.


114
Виробники жорстких дисків досі не впіймали ...
Майкл Майєрс

10
@mmyers Я думаю, ви маєте на увазі маркетологів на жорсткому диску, чи не так? Або ж накопичувачі фактично побудовані так?
Instantsoup

16
Гей, перестань ненавидіти кібі. MeBi та KiBi - принаймні небімбігубус.
bzlm

21
Кіло означає 1000, Мега - 1000000, Гіга - 1000000000. Неправильно це визнали виробники оперативної пам’яті та ОС, а не виробники приводів.
Марк Рансом

39
Ніхто цього не збирається робити? Серйозно? Гаразд, я зроблю це ... xkcd.com/394
Ерік Форбс

36

Цей стан перевіряється як:

if (condition1 && condition2 && condition3)

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


15
Якою мовою? Такі мови, як C / C ++, Java та Python, гарантують, що умови оцінюються зліва направо і що оцінка зупиняється на першій умові, що повертає помилковим. Це частина специфікації лангажу. Я припускаю, що більшість інших мов дають ту саму гарантію.
Клінт Міллер

44
@Clint: Так, отже, "це виявилося невірно".
bzlm

так, це класно. це робить wrint речі на зразок if (myList! = null && myList.Count> = 0) {do stuff ();} набагато простіше
Zack

4
насправді це залежить від мови та & оцінить усі умови (не ярлик). І я бачив, як багато хто використовує And (&) у VB замість AndAlso (&&)
Лукас

2
. . . Насправді він також зазнає аварії на VB.net, якщо ви не скористаєтесь коментарем AndAlso re Lucas
Binary Worrier

35

Щоб моє програмування було б швидшим і кращим, якби я виконував його поодинці.


Але це не може бути таким некрасивим, як пара- програмування :-) за винятком, можливо, вашого коду
Яйце

33
Все залежить від іншої людини. =)
JohnFx
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.