MVP - это минимально жизнеспособный продукт. Хотя по мне, Python вероятно больше годен для прототипирования, чем для создания MVP. MVP нужно создавать на том языке, который планируется и дальше использовать, развивая этот MVP. А прототип - просто выбрасывается и продукт переписывается с нуля.
Если нужно освоить программирование совсем с нуля, то нужно брать Pascal. Конечно, потом его придется выкинуть, но для начального обучения он подойдет лучше всего: этот язык и создавался для обучения. Тут главное понять, что такое структурное программирование, какие бывают структуры данных и алгоритмы и как ими пользоваться.
Как только почувствуете уверенность и Pascal начнет раздражать - можно переходить к C (или C++ в некотором минимальном его подмножестве).
Дальше, работая с C/C++ обязательно нужно коснуться темы языков ассемблера. Хотя бы в общих чертах понять, как работает процессор, как исполняются команды, что такое регистры и пр. Написать прару-тройку простеньких программ на ASM или сделать оптимизации с ассемблерными вставками.
После того, как закрепитесь на уровне C, нужно обязательно посмотреть Scheme (или вообще любой Lisp), чтобы понять, что можно и по-другому.
Теперь, от этой точки, можно двигаться в любом направлении: Rust, Go, Python, C#, Java, Haskell и т. д. что душе угодно.
Если требуется основательный подход к проекту, то Rust подойдет лучше, чем Go. Но большинство компаний и правда, тратиться на обучение не будут - они просто подождут, пока "человеческий ресурс" сам созреет для них.
Насколько крупные вам надо? Что значит "в России", если компания состоит из русскоговорящих, имеет офис в России, но зарегистрирована за рубежом, она считается "в России"?
Конечно, территория и карта - это разные объекты. Но карта будет картой территории только в том случае, если она будет иметь с территорией определенный набор общих абстракций. То есть, если она будет отражать определенные стороны территории.
Если объект и его модель не пересекаются, то как выводы, верные для модели, могут быть верными для объекта?
> С точки зрения современного научного подхода
С каких именно философских позиций? Неопозитивистских? Кантиантских? То, что вы относите к "точке зрения современной науки" на поверку оказывается точкой зрения вполне определенной философской позиции, у которой есть свои проблемы, которая, возможно, стоит на почве более зыбкой, чем диалектика, но которая, пока что, удобнее и проще. (Буду рад, если вы приведете убедительные доводы против).
Материалистическая диалектика - это вполне себе новая "наука" (пишу в кавычках, потому что она еще не достаточно развита и уж тем более ей пока далеко до принятия большинством). Она очень современна. Но не надо ее путать с марксистскими политическими течениями и идеологией, которые частично используют ту же терминологию, но вкладывают в слова иные смыслы. Особенно забавно читать советские научные дискуссии по философии и экономике, где в околомарксистской терминологии представлен весь спектр современных филосовских взглядов вообще. Так что с падением Советского Союза мат. диалектика скорее не умерла, а очистилась от политического давления и обрела второе дыхание.
Более того, мы не обязаны иметь только лишь непротиворечивые теории и концепции. В частности, современные направления логики (такие как паранепротиворечивая логика) уже потихоньку начинают реабилитировать и принимать противоречия.
Насколько я знаю, под каждый wasm-модуль выделяется 16 Гб виртуальной памяти, 8 Гб до начала памяти модуля, и 8 Гб на саму память (guard pages). Поэтому максимальный адрес, который может быть использован в WASM 32, не выходит за данный диапазон (он рассчитывается как 0xffffffff + 0xffffffff = 0x1fffffffe), и проверка условия не требуется.
Я не понял ваш ответ. Допустим, у меня есть программа на Rust, и компилятор мне проверил, что нигде нет null. Я эту программу компилирую в WASM. Зачем мне там теперь нужны динамические проверки?
А можно подробнее, как это работает?
MVP - это минимально жизнеспособный продукт. Хотя по мне, Python вероятно больше годен для прототипирования, чем для создания MVP. MVP нужно создавать на том языке, который планируется и дальше использовать, развивая этот MVP. А прототип - просто выбрасывается и продукт переписывается с нуля.
C, C++ и уж тем более Rust - это высокоуровневые языки программирования.
Pascal -> C/C++ -> Asm -> Lisp -> Rust, Go, Python, C#, Java, JavaScript, Haskell, ...Если нужно освоить программирование совсем с нуля, то нужно брать Pascal. Конечно, потом его придется выкинуть, но для начального обучения он подойдет лучше всего: этот язык и создавался для обучения. Тут главное понять, что такое структурное программирование, какие бывают структуры данных и алгоритмы и как ими пользоваться.
Как только почувствуете уверенность и Pascal начнет раздражать - можно переходить к C (или C++ в некотором минимальном его подмножестве).
Дальше, работая с C/C++ обязательно нужно коснуться темы языков ассемблера. Хотя бы в общих чертах понять, как работает процессор, как исполняются команды, что такое регистры и пр. Написать прару-тройку простеньких программ на ASM или сделать оптимизации с ассемблерными вставками.
После того, как закрепитесь на уровне C, нужно обязательно посмотреть Scheme (или вообще любой Lisp), чтобы понять, что можно и по-другому.
Теперь, от этой точки, можно двигаться в любом направлении: Rust, Go, Python, C#, Java, Haskell и т. д. что душе угодно.
Если требуется основательный подход к проекту, то Rust подойдет лучше, чем Go. Но большинство компаний и правда, тратиться на обучение не будут - они просто подождут, пока "человеческий ресурс" сам созреет для них.
Насколько крупные вам надо? Что значит "в России", если компания состоит из русскоговорящих, имеет офис в России, но зарегистрирована за рубежом, она считается "в России"?
От кадров с отсылками к первому фильму складывается впечатление, что Нео теперь занял место Морфеуса.
Это было предопределено.
А у карты может быть, по вашему?
Сожгли время людей впустую - и это предмет для гордости?
Конечно, территория и карта - это разные объекты. Но карта будет картой территории только в том случае, если она будет иметь с территорией определенный набор общих абстракций. То есть, если она будет отражать определенные стороны территории.
Если объект и его модель не пересекаются, то как выводы, верные для модели, могут быть верными для объекта?
> С точки зрения современного научного подхода
С каких именно философских позиций? Неопозитивистских? Кантиантских? То, что вы относите к "точке зрения современной науки" на поверку оказывается точкой зрения вполне определенной философской позиции, у которой есть свои проблемы, которая, возможно, стоит на почве более зыбкой, чем диалектика, но которая, пока что, удобнее и проще. (Буду рад, если вы приведете убедительные доводы против).
Материалистическая диалектика - это вполне себе новая "наука" (пишу в кавычках, потому что она еще не достаточно развита и уж тем более ей пока далеко до принятия большинством). Она очень современна. Но не надо ее путать с марксистскими политическими течениями и идеологией, которые частично используют ту же терминологию, но вкладывают в слова иные смыслы. Особенно забавно читать советские научные дискуссии по философии и экономике, где в околомарксистской терминологии представлен весь спектр современных филосовских взглядов вообще. Так что с падением Советского Союза мат. диалектика скорее не умерла, а очистилась от политического давления и обрела второе дыхание.
Ну вы можете оперировать числами типа
i64, но указатель имеет типi32(в wasm 32).Более того, мы не обязаны иметь только лишь непротиворечивые теории и концепции. В частности, современные направления логики (такие как паранепротиворечивая логика) уже потихоньку начинают реабилитировать и принимать противоречия.
Но ведь первое есть второе! Это я и пытался объяснить. (Хотя обратное и не верно.)
Где это вы смотрите и видите, что никто ответов не находит?
Насколько я знаю, под каждый wasm-модуль выделяется 16 Гб виртуальной памяти, 8 Гб до начала памяти модуля, и 8 Гб на саму память (guard pages). Поэтому максимальный адрес, который может быть использован в WASM 32, не выходит за данный диапазон (он рассчитывается как
0xffffffff + 0xffffffff = 0x1fffffffe), и проверка условия не требуется.Зачем ему вообще что-то проверять, если вся программа работает в своей собственной линейной памяти и за ее пределы выйти не может?
Я не понял ваш ответ. Допустим, у меня есть программа на Rust, и компилятор мне проверил, что нигде нет null. Я эту программу компилирую в WASM. Зачем мне там теперь нужны динамические проверки?
А чем этот список отличается от списка "Топ-10", приведенного выше?